【问题标题】:GDI+ performance (System.Windows.Forms, System.Drawing) & SkinningGDI+ 性能(System.Windows.Forms、System.Drawing)和皮肤
【发布时间】:2012-01-17 10:37:45
【问题描述】:

我想创建一个基于 Windows 窗体并使用自定义皮肤的应用程序。大多数皮肤都是位​​图,我将其切成 9 个部分,因此我可以通过 9 个 Graphics.DrawImage() 调用漂亮的框/面板进行绘制。当应用程序看起来更像其他皮肤应用程序时,问题就开始了。当一切都在视觉上完成时,问题是 - 性能。我还为具有自定义背景图像的 MDI 容器面板的窗口窗体设置了皮肤。当我拖动这样的表单时,屏幕会闪烁、混乱 - 通常会出现低 FPS。

我可以做些什么来编写具有快速 GUI 的皮肤、Windows 窗体应用程序? (我将计划不使用 WPF)提前感谢您的回复。

【问题讨论】:

  • 如果你想要性能,使用 WPF :)
  • 我重音:我不会使用 WPF。为什么?因为我知道并不是每个具有非常快速 GUI 的应用程序(例如 FL Studio)都使用 WPF。所以肯定还有别的办法……

标签: c# .net winforms skinning skin


【解决方案1】:

Graphics.DrawImage() 不仅仅是简单地绘制图像,您还可以使用 P/Invoke BitBlt 来大大提高性能。

例如见http://www.codeproject.com/KB/GDI-plus/flicker_free.aspx

【讨论】:

  • 非常感谢 :) 它运行得更快,但它的编程必须更复杂一些。然而,这是优化的坚实基础。此外,我还使用了所有控件的 SetStyle 方法来加快速度。现在它工作得非常非常快:)
  • 很高兴听到你的进展:)
猜你喜欢
  • 2010-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-27
  • 2011-10-24
  • 2011-02-19
  • 2015-04-18
相关资源
最近更新 更多