//两种方式
unit draws;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
var
h_DC:HDC;
h_pen,h_oldpen:HPEN;
h_Brush,h_OldBrush:HBRUSH;
begin
h_DC:=GetDC(0);
h_pen:=CreatePen(PS_SOLID,10,clRED);
h_Brush:=CreateSolidBrush(clYellow);
// 将创建的画笔画刷选入设备上下文
// 同时保存原来的画笔画刷
h_OldPen:=SelectObject(h_DC,h_Pen);
h_OldBrush:=SelectObject(h_DC,h_Brush);
Rectangle(h_DC,100,100,300,350);
SelectObject(h_DC,h_OldPen);
SelectObject(h_DC,h_OldBrush);
DeleteObject(h_Pen);
DeleteObject(h_Brush);
ReleaseDC(0,h_DC);
form1.Refresh;
end;procedure TForm1.Button2Click(Sender: TObject);
var
AC:TCanvas;
DC:THandle;
begin
AC:=TCanvas.Create;
DC:=GetDC(0);
try
AC.Handle:=DC;
AC.Pen.Color:=clRed;
AC.Pen.Width:=10;
AC.Brush.Color:=clYellow;
AC.Rectangle(500,100,700,350);
finally
ReleaseDC(0,DC);
AC.Free;
end;
form1.Refresh;
end;end.
unit draws;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
var
h_DC:HDC;
h_pen,h_oldpen:HPEN;
h_Brush,h_OldBrush:HBRUSH;
begin
h_DC:=GetDC(0);
h_pen:=CreatePen(PS_SOLID,10,clRED);
h_Brush:=CreateSolidBrush(clYellow);
// 将创建的画笔画刷选入设备上下文
// 同时保存原来的画笔画刷
h_OldPen:=SelectObject(h_DC,h_Pen);
h_OldBrush:=SelectObject(h_DC,h_Brush);
Rectangle(h_DC,100,100,300,350);
SelectObject(h_DC,h_OldPen);
SelectObject(h_DC,h_OldBrush);
DeleteObject(h_Pen);
DeleteObject(h_Brush);
ReleaseDC(0,h_DC);
form1.Refresh;
end;procedure TForm1.Button2Click(Sender: TObject);
var
AC:TCanvas;
DC:THandle;
begin
AC:=TCanvas.Create;
DC:=GetDC(0);
try
AC.Handle:=DC;
AC.Pen.Color:=clRed;
AC.Pen.Width:=10;
AC.Brush.Color:=clYellow;
AC.Rectangle(500,100,700,350);
finally
ReleaseDC(0,DC);
AC.Free;
end;
form1.Refresh;
end;end.
Windows.LineTo(FHandle, X, Y);
注:这里的Windows是VCL中的Windows单元。从VCL源码看,是gdi32.dll导出的函数