1

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

4

6 回答 6

5

这取决于很多事情,包括你有多少行,网格有多大,以及用户有什么显卡。

你最好的选择是只做其中一个(可能是 DrawLine,我的直觉说它会更简单和更快)然后在慢速机器上测试它。如果它有效并且速度足够快,请不要过早优化它。

于 2009-05-29T11:59:02.227 回答
2

另一种选择:使用网格图案和区域创建画笔FillRect()。根据我的经验,大多数情况下,这是最快的方法。

然而,“RichieHindle”是对的;如果您仅通过测量速度就可以了解事实,则无需对此进行哲学思考;)..

于 2009-05-29T13:25:46.280 回答
1

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

于 2009-05-29T12:06:36.297 回答
0

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

于 2009-05-30T17:50:32.303 回答
0

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

于 2009-05-29T12:19:07.770 回答
0

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

于 2009-05-30T18:10:15.343 回答