【问题标题】:What happens to the DC when I free a canvas?当我释放一个画布时,DC 会发生什么?
【发布时间】:2011-09-17 13:29:59
【问题描述】:

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

【问题讨论】:

    标签: delphi canvas gdi


    【解决方案1】:

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

    来自TCanvas.Handle Property

    TCanvas 不拥有 HDC。 应用程序必须创建一个 HDC 和 设置句柄属性。应用 画布时必须释放 HDC 不再需要它。

    【讨论】:

      猜你喜欢
      • 2011-08-25
      • 2013-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-15
      • 1970-01-01
      • 2014-04-29
      • 1970-01-01
      相关资源
      最近更新 更多