C#剖析系列――控件继承(2)
那么ms是不是用graphics的函数进行绘制这些基本控件的呢,原来我也以为会是,结果我在繁杂的代码里找了一大圈,答案是不是,实际上ms还是用的老办法,就象古老的c++程序一样,通过registerclass、createwindow来绘制标准的控件,并且将userpaint设成了false,为什么要么做呢,难道不能使用graphics来绘制么,这样不是一个更干净的。net平台么,如果是考虑效率的问题,我想这不是个理由,事实上很多三方控件,都是直接使用graphics来绘制控件,效率不是一样的出色么?
原因只有一个,对于windows这个ms最重要的产品,外观对于它而言是一个重要的技术专利,因此。net平台里就会看到很多这个原因引起的东东,比如说controlpaint这个类,它的方法连基本的控件都不能全部绘制出来,还有xp都出来这么久了,xp样式的控件绘制。net平台也不提供,它自家的控件倒是很方便地可以显示,三方控件能做到与它完全一致的少之又少。还用从源码中倒处可以看到sealed这个关键词,无它,还是让你没办法去重载它。
本来。net平台的设计是相当的完美,但是ms的商业意识让windows下的。net平台不会是一个最完美的。net平台。
下一篇是如何象ms一样做到在xp平台来显示控件xp样式。注意,这是你自已完全绘制的控件,不是简单的用usercontrol来组合几个基本控件。
文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。