2009-05-29 34 views
1

我有一个网格控件。每次使用设备上下文类中的绘制线功能绘制组成网格的水平线和垂直线会更昂贵,还是将网格绘制一次到存储设备上下文更快,然后每次都使用blit窗口直流?谢谢。dc-> DrawLine()一堆或一个blit是否便宜?

回答

5

它取决于许多事情,包括你有多少行,网格有多大,以及用户有什么视频卡。

最好的办法是只做其中的一个(可能是DrawLine,我的直觉感觉会更简单快捷),然后在慢速机器上测试它。如果它工作并且速度足够快,不要过早地优化它。

+1

+1:对于建议尝试并记录结果 - 出色的答案:-) – 2009-05-29 12:01:17

+0

来自“Great programming quotes”的问题:“我们应该忘记小效率,大约97%的时间:过早优化是万恶之源“。 - 唐纳德克努特 – 2009-05-29 12:06:40

1

A已经做出了这样的控制,并且在更新单元格时,我画出了每个单元格的边框。 (这只是一个替代思想)

0

这也取决于你使用的是什么样的笔。对于简单的纯色水平和垂直线条,IIRC填充矩形通常是最快的,但执行自己的基准测试应该相当简单。

2

另一种选择:创建一个画笔与网格模式,只是FillRect()该地区。大多数时候,这是最快速的方式,从我的经验。

但是,“RichieHindle”是正确的;如果只通过测量速度就能得出事实,则不需要关于它的哲学;)..

0

简答:后者。一次刷新到内存DC,以便它可以用作后续重新绘制操作的位图通常是更快的渲染方法。

0

Blitting是首选,因为它会将图像复制到内存中。复制图像时,应在绘制图像时防止闪烁。

相关问题