C#/ Silverlight/WPF /快速渲染大量的圆圈

Wal*_*t W 9 c# silverlight wpf graphics

我想尽可能快地和频繁地在silverlight或wpf(大约1000-10000)内渲染很多圆圈或小图形.如果我必须转到DX或OGL,那很好,但我想知道在这两个框架中的任何一个中首先执行此操作(读取:如果答案仅限WPF或仅限Silverlight,则可以.)此外,如果有办法通过WPF访问DX并在表面上渲染,我也会对此感兴趣.

那么,绘制大量圆圈的最快方法是什么?它们可以尽可能简单,但它们确实需要半径.目前我正在为每个圆使用DrawingVisual和DrawingContext.DrawEllipse()命令,然后将视觉渲染到RenderTargetBItmap,但随着圆圈数量的增加它变得非常慢.

顺便说一句,这些圈子每一帧移动,所以除非你打算建议缓存各个圈子,否则缓存不是一个真正的选择...但它们的尺寸是动态的,所以我不确定这是一个很好的方法.

Anv*_*aka 5

在Silverlight 3.0+中,很可能,您将使用WriteableBitmap.在WPF中它也可能是一个不错的选择.

我在Silverlight中编写了两个演示应用程序.他们可能是小马车,但他们证明了这一点.

  1. 你好世界的应用.绝对可以优化.表现不是那么好,但那是因为我做了些蠢事.我相信它有~2 500个椭圆:

alt text http://img42.imageshack.us/img42/5629/helloworld.jpg

  1. 幻灯片放映应用.我不记得这里的物品数量,但它超过10 000.

alt text http://img11.imageshack.us/img11/5264/slideshowa.jpg