0
我正在寫在繪製某些類型的分形的WPF(C#)的應用程序。數據集是3d點,需要用單個像素表示。用戶可以點擊並拖動來旋轉地塊點數的數量會有所不同,但可能相當大(500萬或更多)。目前,我正在使用Graphics對象繪製System.Drawing.Bitmap,然後將WPF圖像的Source屬性設置爲該位圖。我遇到的問題是,當我反覆重新繪製圖像內存消耗量穩步攀升。當用戶拖動鼠標時,Plot()方法被重複調用。WPF與GDI內存增長
public void Plot()
{
Graphics g = Graphics.FromImage(bmpCanvas);
//Draw on the graphics object
//...
//...
//...
g.Dispose();
Canvas.Source = loadBitmap(bmpCanvas);
GC.Collect();
}
private BitmapSource loadBitmap(System.Drawing.Bitmap source)
{
return System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(source.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty,
System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
}
具體而言,我想知道我能做些什麼來防止內存不受控制地上升。
總的來說,我想知道,如果這首先是一個不錯的辦法。我想一個WPF應用程序中顯示自定義繪製的圖像,並能夠如此迅速地(即一個體面的幀速率)
有沒有做到這一點WPF框架內更原生的方式嗎?我應該丟棄WPF並返回到窗體窗體中,我可以更精確地控制事物嗎?