当我释放画布时,DC会发生什么?

4
在这段代码中,我希望在MyCanvas.Free中调用ReleaseDC,但是这段代码运行得很好,为什么呢?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;
1个回答

8

TCanvas没有自己的DC,它既不获取也不释放DC。它的后代TControlCanvas会这样做。

来自TCanvas.Handle属性

TCanvas不拥有HDC。 应用程序必须创建HDC并设置Handle属性。 应用程序在画布不再需要时必须释放HDC。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接