请教如何在没有Canvas属性的控件 如:TPanel控件中绘制背景图(100分)

  • 主题发起人 主题发起人 红色公爵
  • 开始时间 开始时间

红色公爵

Unregistered / Unconfirmed
GUEST, unregistred user!
请教如何在没有Canvas属性的控件 如:TPanel控件中绘制背景图,多谢,有源代码最好!
 
var
bmp: TBitMap;
iDc: HDC;
begin
bmp := TbitMap.Create;
try
bmp.LoadFromFile('c:/test.bmp');
iDc := GetDc(Panel1.Handle);
BitBlt(iDc, 0, 0, Panel1.width, panel1.Height, bmp.Canvas.Handle, 0, 0,srcCopy);
finally
bmp.free;
end;
end;
 
TPanel的父亲(TCustomPanel)的父亲(TCustomControl)有Canvas属性,
不过TPanel没有将它public出来。你可以这样用:

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TMyPanel = class(TPanel)
end;
TForm1 = class(TForm)
Panel1: TPanel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
//这样就可以用他的Canvas属性了
//TMyPanel(Panel1).Canvas
end;
end.
 
谢谢 dangbochang 和 独帅 的帮助,两种方法我都试了,都可以,多谢多谢
 
后退
顶部