对于dc-> DrawLine()来说,它是一堆次数还是一次性的?

时间:2009-05-29 11:56:50

标签: c++ winapi graphics gdi

我有一个有网格的控件。每次使用设备上下文类中的绘制线函数绘制构成网格的水平和垂直线是否更昂贵,或者将网格绘制一次到内存设备上下文然后再次将其blit更快窗口直流?感谢。

6 个答案:

答案 0 :(得分:5)

这取决于很多东西,包括你有多少行,网格有多大,以及用户有哪些显卡。

你最好的选择就是做其中一个(可能是DrawLine,我的直觉就是更简单,更快),然后在慢速机器上进行测试。如果它工作且速度足够快,请不要过早地优化它。

答案 1 :(得分:2)

另一种选择:使用网格图案创建画笔,只需FillRect()该区域。根据我的经验,大多数时候,这是最快的方式。

然而,“RichieHindle”是对的;如果你能通过测量速度得到事实,就没有必要对它进行哲学思考;)..

答案 2 :(得分:1)

A做了这样的控制,当我需要更新单元格时,我为每个单元格绘制了边框。 (这只是另一种想法)

答案 3 :(得分:0)

它还取决于您使用的是哪种笔。对于简单的纯色水平和垂直线,IIRC填充矩形通常是最快的,但是进行自己的基准测试应该相当简单。

答案 4 :(得分:0)

简短回答:后者。一次模拟到内存DC,使其可以用作后续重新绘制操作的位图,这通常是更快的渲染方法。

答案 5 :(得分:0)

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