我正在做一个项目,我需要每毫秒绘制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(...).
好吧,问题是后一种方式比前者慢得多。这怎么可能?我哪里错了?如何提高位图的性能?