改善WriteableBitmap性能

时间:2014-05-04 10:59:19

标签: c# wpf canvas writeablebitmap writeablebitmapex

我正在开展一个项目,我需要每隔N毫秒绘制X个省略号,其中0 <= N <= 10^55 <= X <= 500

我开始使用WPF,其相对控件如Canvas用于视口,Ellipse控件用于省略号。我将省略号存储在列表中:

  • 每次椭圆数增加时,我都会在列表中添加一个新的椭圆。
  • 每次myViewport.Children中存储的省略号数量都小于myListOfEllipses.Count时,我会将这些省略号添加到我的视口中,否则我会从视口中删除多余的省略号而不将其从列表中删除。< / LI>
  • 对于每个椭圆,我计算新位置,并使用Canvas.SetLeftCanvas.SetTop方法。

性能非常好,但当X设置为最小值且N大于1000时,速度会有所下降。

我考虑过使用DrawingVisual s,但我认为绘制和显示bitmat也更快。因此,我决定使用Image控件替换我的视口,该控件具有SourceWriteableBitmap并使用WriteableBitmapEx库。

  • 每次使用myBitmap.Clear(Colors.White)清除视口时。
  • 每次使用myBitmap.FillEllipse(...)绘制新的省略号。

嗯,问题是后一种方式比前者慢得多。这怎么可能?我哪里错了?如何提高位图的性能?

0 个答案:

没有答案