如果有手柄,如何创建和释放TCanvas?

时间:2014-10-25 12:09:08

标签: delphi canvas

我想创建一个TCanvas,以便我可以更轻松地绘制。首先我创建了画布MyCanvas:=TCanvas.Create;,然后我得到了句柄DC:=GetWindowDC(Handle);,现在该怎么做......?我应该直接将新句柄分配给画布MyCanvas.Handle:=DC;还是应该首先销毁现有的MyCanvas.Handle?在我完成绘图后,我必须释放句柄ReleaseDC(Handle,DC);,或者如果我释放画布MyCanvas.Free,手柄将自动释放?

1 个答案:

答案 0 :(得分:3)

创建TCanvas时,它没有句柄。使用GetWindowDC返回的DC分配句柄。销毁画布时,手柄不会被销毁。您需要明确调用ReleaseDC

来自docs

  

TCanvas不拥有HDC。应用程序必须创建HDC并设置Handle属性。当画布不再需要时,应用程序必须释放HDC。设置已具有有效HDC的画布的Handle属性不会自动释放初始HDC。