【发布时间】:2012-02-14 06:59:08
【问题描述】:
我有一个用 C# 开发的 winforms 应用程序,其中涉及很多屏幕绘制。绘画涉及自定义控件和其他 2D 对象的渲染。现在的问题是,绘制整个屏幕大约需要 4 到 5 秒。我已将代码优化到一个级别,所有需要的数据都在内存中可用,而不是从磁盘或网络中读取。
为了进一步缩短渲染时间,我打算选择以下选项
直接调用Win32API公开的GDI函数,而不是使用.NET提供的GDI类
使用 DirectX,因为我听说它在渲染方面非常有效。我的应用程序不涉及任何类型的 3D 渲染。
请帮我决定选择哪个选项?除此之外还有其他选择吗,例如任何高性能的第三方组件或库。
【问题讨论】:
-
您有多少个控件?数百?
-
@HansPassant:大约 5K 到 7K 控件
-
哇,神奇的是它只需要 7 秒。您将不得不将其减少到 100 左右。
-
@HansPassant:我绘制控件并在单击时进行命中测试以使控件具有交互性。请让我知道您对 Win32 API 调用或使用“不安全”块之类的意见,这会有什么不同吗?
标签: c# .net winapi gdi+ win32gui