在这段代码中,我希望在 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;

最佳答案

TCanvas 没有自己的 DC,它既不获取也不释放 DC。它的后代 TControlCanvas 确实如此。

来自 TCanvas.Handle Property

关于delphi - 当我释放 Canvas 时 DC 会发生什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6392508/

10-11 22:58