控件什么时候拥有了Canvas??? (已经解答得很好,散分) (300分)

高手,学习ing!!!
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1983765
 
Canvas和Parent有关系.你们知道吗?
 
当显示改变时,由Parent负责通知Canvas重绘,是很重要的一个属性吧。
 
我学到了一点点皮毛,我收藏了此帖。我要多看多学。哈哈哈

菜鸟起步,菜鸟乱发言!呵呵
 
欢迎光临
 
TCanvas是对HDC的封装
Delphi的VCL一般为TCOntrol/TWinControl(ActiveX不讨论)
TCanvas->HDC 所以肯定是和句柄联系在一起的,而在Delphi的TControl是可以没有自己的句柄的,但这时候仍然可以拥有Canvas (TControlCanvas) Delphi的TCanvas这个巧妙的封装可以节省系统资源,其秘密就在于纯Control的Parent(TWinCOntrol)必定不为空,这样对纯TControl.Canvas的操作,实际上是对TControl.Parent.Canvas的映射操作(详细的清参考TControlCanvas的实现)
因为TCanvas->HDC->HWND 所以TWinControl的TCanvas只有在拥有句柄之后才有效。也就是
Create->CreateParam->CreateWnd 之后才有效(对TControl就是Parent.HWND有效之后)
 
哇,又遇高手.
 
收藏了。。。 
 
顶部