我對c#很感興趣。只創建一個對象並更新
我有這樣的代碼:
public static BitmapSource FromNativePointer(IntPtr pData, int w, int h, int ch)
{
System.Windows.Media.PixelFormat format = System.Windows.Media.PixelFormats.Default;
if (ch == 1) format = System.Windows.Media.PixelFormats.Gray8; //grey scale image 0-255
if (ch == 3) format = System.Windows.Media.PixelFormats.Bgr24; //RGB
if (ch == 4) format = System.Windows.Media.PixelFormats.Bgr32; //RGB + alpha
WriteableBitmap wbm = new WriteableBitmap(w, h, (double)96, (double)96, format, null);
CopyMemory(wbm.BackBuffer, pData, (uint)(w * h * ch));
wbm.Lock();
wbm.AddDirtyRect(new Int32Rect(0, 0, wbm.PixelWidth, wbm.PixelHeight));
wbm.Unlock();
return wbm;
}
我在與WBM變量一些內存的問題。 如何在此函數之外創建變量,然後僅在進入函數時更新其參數? 謝謝。
您能更具體地瞭解您遇到的內存問題嗎? – 2013-05-07 22:12:15
如果你想避免使用'new WriteableBitmap(...)',你將不得不使用'Bitmap'和'BitmapData'來實現它,它有一些'MAX_WIDTH'和'MAX_HEIGHT'。然後,您可以將其保存爲字段,並在您每次需要時重新使用它。請注意,這不是線程安全的。 – SimpleVar 2013-05-07 23:24:49
謝謝@YoryeNathan我會試試 – Probst 2013-05-08 01:44:37