【问题标题】:Drawing scatter plot is too slow with GDI使用 GDI 绘制散点图太慢
【发布时间】:2015-12-08 03:09:24
【问题描述】:

我正在 GDI 的帮助下绘制散点图。 但是,当线条很多时,绘制大约需要两秒钟。 我研究了使用 SlimDX 和 SharpDX 并使用了它们的 2D。 它只减少了一半的时间。有没有更好的工具可以用来加快绘图速度?我只是在使用 g.DrawLine。我还听说有一个工具可以让我在内存上绘制一个散点图并将其放在屏幕上。如果您有想法,将不胜感激。谢谢你。

【问题讨论】:

  • 请分享您用于绘图的代码。否则很难提供帮助。
  • 您不应该在 SO 上要求库。尽管如此,试试vgdotnet.com - 太棒了。它是一个winforms 可伸缩矢量图形库。你也可以用它制作非常棒的动画。有点像用于 winforms 的 WPF。
  • 有时是你的如何绘制而不是what你用来绘制的API决定了性能。我能想到许多声称通过 Direct3D 进行硬件辅助渲染但性能低于标准的游戏。也许您的代码只是未优化
  • 为什么不使用图表控件?还要定义“许多”!
  • 另见这里simple examples 在控制表面和位图中绘图!

标签: c# gdi sharpdx slimdx


【解决方案1】:

[有没有更好的工具可以用来加快绘图速度?

首先,使用g.DrawLines 代替 g.DrawLine。这意味着从用户代码到图形代码只有一次转换,而不是每行一次。

其次,在图形对象中选择一个位图,在其中绘制,然后将位图写入显示器。有关在位图上绘制线条的示例,请参阅 how to draw a line on a image?。这意味着线条被绘制一次然后刷新显示是一个单一的快速Bit Blit

使用 DirectX 端口(例如 SharpDX 和 SlimDX)是可能的,但除非您处理极其复杂的散点图,否则可能会大材小用。这些(通常)更适合基于 3D 矢量或 2D Bit Blit 的图形。

【讨论】:

    猜你喜欢
    • 2012-11-04
    • 1970-01-01
    • 2021-10-14
    • 2018-06-23
    • 2014-11-10
    • 2021-11-09
    • 2020-09-14
    • 2023-03-13
    相关资源
    最近更新 更多