在此代码中,我希望在ReleaseDC
中调用MyCanvas.Free
,但此代码运行正常,为什么?
TCanvas自己的DC会发生什么?
var GlobalDC: THandle;
procedure TForm1.FormCreate(Sender: TObject);
begin
GlobalDC:= GetDC(0);
end;
function LoopMeOften(const X, Y: Integer): TColor;
var
MyCanvas: TCanvas;
begin
MyCanvas := TCanvas.Create;
MyCanvas.Handle := GlobalDC;
Result := GetPixel(MyCanvas.Handle, X, Y);
MyCanvas.Free;
end;
答案 0 :(得分:8)
TCanvas
没有自己的DC,它既不获取也不释放DC。它的后代TControlCanvas
。
TCanvas不拥有HDC。 应用程序必须创建一个HDC和 设置Handle属性。应用 必须在画布时释放HDC 不再需要它。