我用Delphi在Form上画图,觉得Delphi提供的有限的几个画图函数功能不够,所以我想直接使用win API函数。当要取得‘设备环境表’时,不知该使用哪个窗口句柄。
我曾经分别用
form1.Handle
form1.Canvas.Handle
application.Handle
做为参数传递给 GetDc(hwnd)
但是画出来的图形要么不显示,要么显示在桌面上,从不显示在我的程序框架中,
请问这是为什么?我该传递哪个参数做为句柄?谢谢!!
我曾经分别用
form1.Handle
form1.Canvas.Handle
application.Handle
做为参数传递给 GetDc(hwnd)
但是画出来的图形要么不显示,要么显示在桌面上,从不显示在我的程序框架中,
请问这是为什么?我该传递哪个参数做为句柄?谢谢!!
procedure TForm1.Button1Click(Sender: TObject);
var
//
DC:HDC;
brush:HBRUSH;
PEN:HPEn;
oldmode:integer;
//
PointsArr:Array[0..3] of TPoint;
begin
DC:=GetDC(Handle); brush:=0;
pen:=0;
// try
brush:=CreateSolidBrush(Clred);
oldMode:=SetBkMode(DC,Transparent);//
SelectObject(DC,brush); Pen:=CreatePen(PS_SOLID,1,clred);
SelectObject(DC,Pen); //SetLength(PointsArr,4);
ShowMessage(IntToStr(SizeOf(PointsArr))); //长度为32个字节,如果用原来你的setlength,长度仍为4个字节
PointsArr[0]:=Point(20,2);
PointsArr[1]:=Point(120,6);
PointsArr[2]:=Point(100,200);
PointsArr[3]:=Point(20,200); Windows.Polygon(DC,PointsArr, 4); //??
finally
DeleteObject(brush);
DeleteObject(PEN);
end; SetBkMode(DC,oldMode);//
end;