저는 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 변수로 약간의 메모리 문제에 봉착 :
나는이 코드를 가지고있다. 이 함수 외부에서 변수를 만든 다음 함수에 들어갈 때만 매개 변수를 업데이트하려면 어떻게해야합니까? 감사합니다.
갖고있는 메모리 문제에 대해 더 자세히 설명해 줄 수 있습니까? –
'새로운 WriteableBitmap (...)을 피하려면'MAX_WIDTH'와'MAX_HEIGHT'를 사용하여'Bitmap'과'BitmapData'를 사용하여 직접 구현해야합니다. 그런 다음 필드로 저장하고 필요할 때마다 다시 사용할 수 있습니다. 이것은 스레드로부터 안전하지 않습니다. – SimpleVar
감사합니다. @YoryeNathan 시도해 보겠습니다. – Probst