![]() |
1
7
每次刷新时绘制文本都是浪费。使用 双缓冲 ,也就是说,绘制一个屏幕外的位图,然后将其快速显示到屏幕上。然后,对于滚动,只需在必要时向上或向下或侧向复制大部分位图,然后只绘制无效区域(在将结果块化到屏幕之前)。 如果即使结果太慢,也要将绘制的文本保存在屏幕外位图中,并使用blit而不是draw。 干杯。, |
![]() |
2
2
根据 this german blogpost ,该问题与支持亚洲语言字体有关。如果在XP中启用它们,则获得相同的perf命中率。在Vista/7中,它们是默认启用的,您不能将其关闭。 编辑:也许,使用不同的字体可能会有帮助。。(不包含亚洲字符的)。 |
![]() |
3
2
用户无法在7毫秒内读取7行文本,因此调用本身足够快。 显示器的60赫兹刷新率完全不相关。不需要为每个帧重新呈现相同的文本。显卡会很高兴再次将相同的像素发送到屏幕上。 所以,我觉得你还有一个问题。你想知道滚动文本吗?请问一下你真正遇到的问题,而不是假设DrawText是罪魁祸首。 |
![]() |
4
1
为了在分词时打断文本,DrawText需要反复尝试获取一个文本块的宽度,以查看它是否适合,然后将剩余部分重新进行。每次打电话都要这么做。如果你的文本是不变的,这是不必要的开销。作为解决方法,您可以自己测量文本,插入临时换行符并删除DT_WORDBREAK标志。 |
![]() |
5
0
你考虑过Direct2D/DirectWrite吗? 不管怎样,如果你只将文本绘制一次到它自己的mem-dc,然后将其blit到每次迭代时你希望它绘制的任何dc上,它应该会工作得更好。 |
![]() |
PHPLover · “支持PHP扩展或功能的端口”实际上是什么意思? 11 月前 |