1

我正在做一个项目,我需要每毫秒绘制N一次椭圆,where和.X0 <= N <= 10^55 <= X <= 500

我开始使用 WPF,以及它的相关控件,例如Canvas用于视口的Ellipse控件和用于椭圆的控件。我将省略号存储在一个列表中,并且:

  • 每次椭圆的数量增加时,我都会在列表中添加一个新的椭圆。
  • 每次存储的椭圆数myViewport.Children少于myListOfEllipses.Count我将这些椭圆添加到我的视口时,我都会从视口中删除多余的椭圆而不将它们从我的列表中删除。
  • 对于每个椭圆,我计算新位置并使用Canvas.SetLeftandCanvas.SetTop方法。

性能相当不错,但是X设置为最小值N大于1000时会出现减速。

我考虑过使用DrawingVisuals,但我认为绘制和显示位图也更快。因此,我决定将我的视口替换为具有和使用库的Image控件。SourceWriteableBitmapWriteableBitmapEx

  • 每次我使用myBitmap.Clear(Colors.White).
  • 每次我使用myBitmap.FillEllipse(...).

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

4

0 回答 0