我感興趣的是儘可能快地對動畫的目的在Silverlight顯示一系列計算的位圖到屏幕上。現在這是我正在使用的策略,結果是我的筆記本電腦在50年代中期的FPS可以拍攝1200x700像素的圖像。如何在Silverlight中儘可能快地渲染一系列計算位圖?
你能推薦一個更好的辦法?
public partial class MainPage : UserControl
{
private int _height;
private int _width;
private WriteableBitmap _bitmap;
private DateTime _start;
private int _count = 0;
public MainPage()
{
InitializeComponent();
_width = (int)this.MainImage.Width;
_height = (int)this.MainImage.Height;
_bitmap = new WriteableBitmap(_width, _height);
this.MainImage.Source = _bitmap;
_start = DateTime.Now;
RenderFrame();
}
private void RenderFrame()
{
Dispatcher.BeginInvoke(RenderFrameHelp);
}
private void RenderFrameHelp()
{
int solid = -16777216;
for (int i = 0; i < _width * _height; i++)
{
_bitmap.Pixels[i] = _count % 2 == 0 ? 255 : 100 | solid;
}
_bitmap.Invalidate();
this.FPS.Text = (_count++/(DateTime.Now - _start).TotalSeconds).ToString();
RenderFrame();
}
}
我相信WriteableBitmap的比PNG編碼方法快得多。這個方法或多或少是相同的,但是你不必爲記憶流和png頭部而煩惱。 – 2011-03-30 18:55:22