0

我有一个用 C# 开发的 winforms 应用程序,其中涉及很多屏幕绘制。绘画涉及自定义控件和其他 2D 对象的渲染。现在的问题是,绘制整个屏幕大约需要 4 到 5 秒。我已将代码优化到一个级别,所有需要的数据都在内存中可用,而不是从磁盘或网络中读取。

为了进一步减少渲染时间,我打算选择以下选项

  1. 直接调用 Win32API 公开的 GDI 函数,而不是使用 .NET 提供的 GDI 类

  2. 使用 DirectX,因为我听说它在渲染方面非常有效。我的应用程序不涉及任何类型的 3D 渲染。

请帮我决定选择哪个选项?除此之外还有其他选择,例如任何高性能第三方组件或库。

4

1 回答 1

1

从个人经验来看:

  • GDI+ 仅比 GDI 慢 < 2 倍。从 .NET(使用 GDI+)切换到纯 GDI 并没有多大帮助。

  • Direct2D 与 GDI 一样慢——至少对于绘制基本形状而言。因此,除非您正在做一些更复杂的事情,否则它可能无济于事。

你最好的选择是可能减少绘图,并双缓冲数据。

如果它不起作用,您可能希望在内存中生成位图(使用 abyte[]或其他东西,完全避免图形 API),并简单地将其直接 blit(复制)到屏幕上。这很难,但结果几乎总是最快的。

于 2012-02-14T07:03:17.190 回答