Delphi 当您拥有句柄时,如何创建和释放TCanvas?
我想创建一个Delphi 当您拥有句柄时,如何创建和释放TCanvas?,delphi,canvas,Delphi,Canvas,我想创建一个TCanvas,这样我可以更容易地绘制。首先,我创建canvasMyCanvas:=TCanvas.create,然后我得到句柄DC:=GetWindowDC(句柄)现在我该怎么做?我应该直接将新句柄分配给canvasMyCanvas.handle:=DC还是应该先销毁现有的MyCanvas.Handle?完成绘图后,我必须释放手柄ReleaseDC(手柄,DC)或者如果我释放画布MyCanvas.free,句柄将自动释放?当您创建TCanvas时,它没有句柄。使用GetWindow
TCanvas
,这样我可以更容易地绘制。首先,我创建canvasMyCanvas:=TCanvas.create代码>,然后我得到句柄DC:=GetWindowDC(句柄)代码>现在我该怎么做?我应该直接将新句柄分配给canvasMyCanvas.handle:=DC
还是应该先销毁现有的MyCanvas.Handle
?完成绘图后,我必须释放手柄ReleaseDC(手柄,DC)
或者如果我释放画布MyCanvas.free
,句柄将自动释放?当您创建TCanvas
时,它没有句柄。使用GetWindowDC
返回的DC分配句柄。销毁画布时,句柄不会被销毁。您需要显式调用ReleaseDC
从:
TCanvas不拥有HDC。应用程序必须创建HDC并设置句柄属性。当画布不再需要HDC时,应用程序必须释放它。设置已具有有效HDC的画布的句柄属性不会自动释放初始HDC
如有疑问,请查看HandleAllocated
属性TCanvas
是一个抽象类,它没有DC句柄,因此是的,您必须在清理时ReleaseDC
。您可以使用TControlCanvas
类,它将为您获取和释放DC。顾名思义,它的用途是使用内部控件。