我们需要优化C#Windows窗体应用程序的文本呈现,在不规则网格中显示大量小字符串.任何时候都可以看到超过5000个单元格,每秒更新4次.字体系列和大小在单元格中是一致的,尽管颜色可能因单元格而异,粗体/斜体/单元格也不同.
我已经在网上看到有关TextRenderer.DrawText
与Graphics.DrawString
最快/最好的信息相冲突的信息,这在Win32级别上降低为GDI与GDI +的比较.
我在Windows XP和Windows Vista上也看到了截然不同的结果,但我的主要目标是Windows XP.在WinFX和DirectX 10下取得巨大进步的文章在这里没有用:-)
这里最好的方法是什么?我不害怕引入一个小的C++/CLI层并优化设备上下文处理以挤出更多性能,但我想要一些关于采取哪个方向的明确建议.
编辑:感谢您的初步回复.我将尝试组合背景位图渲染并坚持使用GDI等效调用.
微软开发人员在他的博客上发布了一篇GDI与GDI + Text Rendering Performance的文章,该文章回答了原始速度问题:在他的系统上,GDI DrawText比GDI + DrawString快6倍.
如果你需要成为一个真正的速度恶魔,TextOut比DrawText更快,但你必须自己处理剪辑和自动换行.ExtTextOut支持剪辑.
GDI渲染(TextRenderer)将与使用GDI的Windows的其他部分更加一致; GDI +试图与设备无关,因此一些间距和扩展是不一致的.有关不一致呈现的示例,请参阅SQL Server 2005表面区域配置工具.