我正在开展一个项目,我需要每隔N
毫秒绘制X
个省略号,其中0 <= N <= 10^5
和5 <= X <= 500
。
我开始使用WPF,其相对控件如Canvas
用于视口,Ellipse
控件用于省略号。我将省略号存储在列表中:
myViewport.Children
中存储的省略号数量都小于myListOfEllipses.Count
时,我会将这些省略号添加到我的视口中,否则我会从视口中删除多余的省略号而不将其从列表中删除。< / LI>
Canvas.SetLeft
和Canvas.SetTop
方法。性能非常好,但当X
设置为最小值且N
大于1000时,速度会有所下降。
我考虑过使用DrawingVisual
s,但我认为绘制和显示bitmat也更快。因此,我决定使用Image
控件替换我的视口,该控件具有Source
个WriteableBitmap
并使用WriteableBitmapEx
库。
myBitmap.Clear(Colors.White)
清除视口时。myBitmap.FillEllipse(...)
绘制新的省略号。嗯,问题是后一种方式比前者慢得多。这怎么可能?我哪里错了?如何提高位图的性能?