我想创建一个TCanvas
,以便我可以更轻松地绘制。首先我创建了画布MyCanvas:=TCanvas.Create;
,然后我得到了句柄DC:=GetWindowDC(Handle);
,现在该怎么做......?我应该直接将新句柄分配给画布MyCanvas.Handle:=DC;
还是应该首先销毁现有的MyCanvas.Handle
?在我完成绘图后,我必须释放句柄ReleaseDC(Handle,DC);
,或者如果我释放画布MyCanvas.Free
,手柄将自动释放?
答案 0 :(得分:3)
创建TCanvas
时,它没有句柄。使用GetWindowDC
返回的DC分配句柄。销毁画布时,手柄不会被销毁。您需要明确调用ReleaseDC
。
来自docs:
TCanvas不拥有HDC。应用程序必须创建HDC并设置Handle属性。当画布不再需要时,应用程序必须释放HDC。设置已具有有效HDC的画布的Handle属性不会自动释放初始HDC。