CSharp加快自定义控件的绘制
前两天由于需要用CSharp做一个控件,就翻看了以前做控件里自己的代码。不看不知道,看了才知道以前自己写的控件糟糕到什么程度! 自定义一个控件需要继承CSharp提供的一个专门的用户控件类UserControl,我们使用自己的控件基本上或者说必须重载一下onPaint方法了,以前的代码就是将绘制控件所需要的逻辑都写在onPaint方法里了,如果绘图量比较小的话还可以接受,但是稍微复杂一点的控件这样做的弊端就出来了!这里会将导致整个窗体的刷新拖慢从而使界面不流畅! 不清楚CSharp控件的新手容易犯这个错误,将onPaint变得极其庞大。大家都知道,内存与内存之间传递数据很快,但是内存与显存之间交换数据相较于内存与内存之间速度就会很慢了,不知道.NET对这一部分是如何优化的,但是直接在onPaint里每次调用Graphics的绘制方法直接操作显存(姑且这么说),将数据一小段地从内存中传递到显存中这个速度是很慢的。 所以假如的代码是这样的 protected override void onPaint(...) { e.g.draw...(); ... ... e.g.draw...(); ... ... } 那么建议改掉它! 我目前所做的控件里的onPaint是这样的 protected override void onPaint(...) { base.onPaint(e); e