Panel 没有 Canvas 吗?那怎么才能在 Panel 上平铺背景图片?(50分)

  • 主题发起人 主题发起人 cysnowboy
  • 开始时间 开始时间
C

cysnowboy

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在 Panel 的背景上平铺图片,不知道怎样才能实现,Panel 是不是没有 Canvas 的?

我尝试用 Panel1.Brush.Bitmap := Image1.Picture.Bitmap;
结果还是失败了。。。
 
在formpaint事件
var
ACanvas:TCanvas;
ACanvas:=TCanvas.Create;
ACanvas.handle:=GetDC(Panel1.handle);
with ACanvas do
可以画图了
end;
 
就直接在panel上放一个image不可以吗?
 
panel动态创建画布
procedure TForm1.Button1Click(Sender: TObject);
var
c: TCanvas;
begin
c := TControlCanvas.Create;
TControlCanvas(c).Control := panel1;
c.Brush.Style := bsClear;
// c.Pen.Color := clBlue;
// c.Rectangle(5, 5, 15, 15);
c.Draw(0, 0, image1.Picture.Bitmap);
c.Free;

end;
 
楼上,您的代码只能画出不是平铺的图片,还有,我把那些代码放在FormCreate里面就
没有效果了?
 
放在CREATE中当然没有效果了
窗体创建完还要再重绘的
你刚才的就被冲掉了
 
凡是使用了TCanvas画出来的效果,在窗体被遮盖后,即使再重新把窗体显示到前面,
被遮盖的部分是不会自动恢复原样的----即是说,只要窗体重绘你画的那些就没了,
因此必须在OnPaint事件中重绘你自己的图。
 
同意ldaan3
 
Please use TImage.
 
重写TPanel控件,重载Paint方法.并公开Canvas属性.
 
我的主页上这样的一个控件:http://www.aidelphi.com
32、终于有些时间整理我做的几个控件的源码(2--7项中的控件),现正式公开。
包括:
一组可控制界面的阴阳历控件、
一个可绘制并可透明的面板控件、 //////就是这个啦!
一个文件夹文件列表的控件、
一个可改变颜色、
字体等多种属性的Hint控件、
一个可绘制图片背景的进度条、
一个对数据集指定字段进行纵向统计的数据感知控件、
一个可编辑多种数据类型的Edit类型控件、
一组属性编辑器、
内含几个基于这些控件的Demo,希望对你的学习有所帮助。
(因为涉及到属性编辑器,而Delphi6的属性编辑器和Delphi5的属性编辑器差别比较大,
所以这些代码只能在Delphi5中编译,在Delphi6中编辑不能通过)。
本着自由的原则,站长将尽量抽时间把记事闹钟万年历的源码整理好公开。
控件Download和Demo Download!

 
我这里有一个别人写的简单控件,但忘了是谁的.
在原有Panel基础上加上Canvas, 及OnPaint

unit DPanel;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls;

type
TDPanel = class(TPanel)
private
fPaint:TNotifyEvent;
{ Private declarations }
protected
procedure Paint;override;
{ Protected declarations }
public
property canvas;
{ Public declarations }
published
property OnPaint:TNotifyEvent read fPaint write fPaint;
{ Published declarations }
end;

procedure Register;

implementation

procedure TDPanel.Paint;
begin
inherited;
if Assigned(fPaint) then
fPaint(self);
end;

procedure Register;
begin
RegisterComponents('New ComponentS', [TDPanel]);
end;

end.
 
后退
顶部