你试一下跟踪,将发现Paint事件根本没有载入图片
其实你可以采用下面的程序来实现你的控件功能,就可以了:
var CDC:HDC;
a:TCanvas;
bit:TBitmap;
begin
CDC:=getdc(Panel1.Handle);
a:=TCanvas.Create;
bit:=TBitmap.Create;
bit.LoadFromFile('c:\windows\tiles.bmp');
a.Handle:=cdc;
a.Draw(0,0,bit);
end;
其实你可以采用下面的程序来实现你的控件功能,就可以了:
var CDC:HDC;
a:TCanvas;
bit:TBitmap;
begin
CDC:=getdc(Panel1.Handle);
a:=TCanvas.Create;
bit:=TBitmap.Create;
bit.LoadFromFile('c:\windows\tiles.bmp');
a.Handle:=cdc;
a.Draw(0,0,bit);
end;
解决方案 »
- 请问如何用一个窗口包住两个程序~
- 猪八戒威客网上的程序员也太不值钱了吧?
- 如何获取一个文件夹下面的所有子文件名,并将它子文件名一一列在一个窗口上.....(帮顶有分)?
- 怎样实现程序切换功能?
- 保存时,提示“无法更新定位行。一些可能已在最后一次读取后已更改。”,求助!
- 明白人给我看看代码~有错误~UP者有分~弄明白的话再给些分也无所谓~
- 关于RecordSet的EOF和BOF问题???
- TcpClient控件无法接收Server端发来的数据\TCPClient的OnReceive事件不被触发
- 拿到Delphi Linux------Kylix1。0了!庆祝一下!!
- Delphi与Foxpro
- 怎样讲*.doc转变为*.jpg?
- 工具条对应的imagelist中的图标很不清晰!
unit TilePanel;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls;type
TTilePanel = class(TPanel)
private
FTile: TPicture;
procedure TileChanged(Sender: TObject);
procedure SetTile(Value: TPicture);
protected
procedure Paint; override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property Tile: TPicture read FTile write SetTile;
end;procedure Register;implementationconstructor TTilePanel.Create(AOwner: TComponent);
begin
inherited Create(AOwner); FTile := TPicture.Create;
FTile.OnChange := TileChanged;
end;destructor TTilePanel.Destroy;
begin
FTile.Free; inherited Destroy;
end;procedure TTilePanel.TileChanged(Sender: TObject);
begin
Invalidate;
end;procedure TTilePanel.SetTile(Value: TPicture);
begin
FTile.Assign(Value);
end;procedure TTilePanel.Paint;
var
x, y: Integer;
begin
inherited Paint; if (FTile.Graphic=nil) and (FTile.Width=0) and (FTile.Height=0) then
begin
y := 0;
while y=Height do
begin
x := 0;
while x=Width do
begin
Canvas.Draw(x, y, FTile.Graphic);
Inc (x, FTile.Width);
end;
Inc (y, FTile.Height);
end;
end;
end;procedure Register;
begin
RegisterComponents('MyPanel', [TTilePanel]);
end;end.
你的发表的控件同样的不能显示