【问题标题】:Alternate for MoveTo and LineTo in Windows CE, MFC在 Windows CE、MFC 中替代 MoveTo 和 LineTo
【发布时间】:2011-05-31 01:50:12
【问题描述】:

您好,我正在研究一些必须绘制垂直线的高分辨率显示功能,我正在使用 Moveto() 和 lineTO() ,但这需要很多时间... 谁能建议我,我们可以用什么来代替它...来优化性能...

看到场景是,为了绘制 100 条垂直线需要 84 毫秒的时间,我们需要将其减少到 5 毫秒。

请向我推荐任何替代方法。

谢谢,

穆克什

【问题讨论】:

  • 您已经问过同样的问题。如果 GDI 很慢,那么唯一的选择就是 D3D。
  • @Chris Becke 屏幕外绘制然后 blt 会很快,还是您不同意该分析?
  • 为什么会更快?如果 CE 设备没有 gdi 硬件加速,那么您的工作量就会增加一倍:它现在必须画线并复制内存。使用后台缓冲区总是较慢:但使用它们是因为它们消除了撕裂和过度绘制的伪影。
  • @Chris 嗯,这对我来说是新闻,而不是我怀疑你

标签: mfc windows-ce gdi


【解决方案1】:

第一步可能是尝试CDC::PolyPolyline。这是到目前为止最容易进行的修改,并且可能就足够了。在那之后决定下一步可能会更加更加困难。显而易见的可能性是 GDI+、OpenGL 和 DirectX 图形。我已经按照使用的复杂性大致递增的顺序列出了它们,以及它们会给你带来你想要的速度提升的可能性。

【讨论】:

    【解决方案2】:

    如果这些垂直线实际上是矩形,还有可能对您有用的 Rectangle 函数。

    【讨论】:

      【解决方案3】:

      我不认为 100 行应该花那么长的时间来绘制。还有什么你没有告诉我们的。你是直接画到屏幕DC吗?您是否尝试过在屏幕外绘制位图然后在屏幕上显示?

      【讨论】:

      • 我们在WinCe设备上使用绘图...需要实现一些填充图形的东西,其中必须从一端到另一端绘制线。 @david 我们还没有尝试过在主 DC 上进行屏幕外绘图和咬合。但我不认为这会对此产生很大影响......无论如何你需要移动点并绘制。
      • @mukesh 你怎么能忽略你正在使用 CE?!!!请编辑您的问题,并附上正在使用的实际设备的详细信息。离屏绘图应该有很大的不同。 LineTo 在内存位图上会非常快。请尝试一下。
      【解决方案4】:

      我建议你使用 GDI+,它应该会更快,好吧,你需要尝试它是否真的适合你的需要:-)

      这是一个将 GDI+ 与 MFC 集成的链接:Using GDI+ with MFC or native C/C++

      【讨论】:

      • GDI+ 以速度慢着称。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-18
      • 2013-02-18
      • 2013-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-18
      相关资源
      最近更新 更多