0

私は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 変数でメモリの問題が発生しています。この関数の外部で変数を作成し、関数に入ったときにのみそのパラメーターを更新するにはどうすればよいですか? ありがとうございました。

4

2 に答える 2

1

グローバル/静的変数にすることもできます。

public class Example(){
      public static WriteableBitmap wbm;
      .
      .
}
于 2013-05-07T22:32:11.047 に答える
0

wbmメソッドに追加のパラメーターとして渡すだけです。returnパラメータリストで次のように宣言する場合は、その必要さえありませんref

public static void
    FromNativePointer(ref BitmapSource wbm, IntPtr pData, int w, int h, int ch)

このように宣言する場合は、次を使用して呼び出す必要がありますref

FromNativePointer(ref mywbm, mypData ... etc.
于 2013-05-07T22:15:21.087 に答える