我正在写在WPF(C#)绘出某些类型的分形的应用。 该数据集的3D点并需要表示为单个像素。 用户可以单击并拖动旋转曲线积分的数额不一,但可以说是相当大的(5000000个地块或更多)。 目前,我画上使用图形对象,然后一个WPF图像的源属性设置为位图System.Drawing.Bitmap。 我的问题是,当我反复地重新绘制图像内存消耗稳步攀升。 情节()方法被调用时用户拖动鼠标重复。
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并返回到Windows窗体,我可以更精确地控制的事情?