【发布时间】:2010-10-29 20:47:03
【问题描述】:
我有一个带有网格的控件。每次使用设备上下文类中的绘制线函数绘制构成网格的水平和垂直线是否更昂贵,或者将网格绘制一次到内存设备上下文然后每次将其blit到窗户直流?谢谢。
【问题讨论】:
我有一个带有网格的控件。每次使用设备上下文类中的绘制线函数绘制构成网格的水平和垂直线是否更昂贵,或者将网格绘制一次到内存设备上下文然后每次将其blit到窗户直流?谢谢。
【问题讨论】:
这取决于很多事情,包括你有多少行,网格有多大,以及用户有什么显卡。
最好的办法是只做其中一个(可能是 DrawLine,我的直觉认为它既简单又快速),然后在慢速机器上进行测试。如果它可以工作并且速度足够快,请不要过早地优化它。
【讨论】:
另一个选项:创建一个画笔,使用网格图案和FillRect() 区域。根据我的经验,大多数情况下,这是最快的方法。
但是,“RichieHindle”是对的;如果您仅通过测量速度就可以掌握事实,则无需对此进行哲学思考;)..
【讨论】:
A 做了一个这样的控件,当需要更新单元格时,我为每个单元格绘制了边框。 (这只是另一种想法)
【讨论】:
这还取决于您使用的是哪种笔。对于简单的纯色水平和垂直线,IIRC 填充矩形通常是最快的,但执行您自己的基准测试应该相当简单。
【讨论】:
简答:后者。 Blitting 到内存 DC 一次,以便它可以用作后续重新绘制操作的位图,通常是更快的渲染方法。
【讨论】:
Blitting 是首选,因为它会将图像复制到内存中。复制图片,绘制时应防止闪烁。
【讨论】: