- 13 名前:デフォルトの名無しさん [2007/03/03(土) 20:46:15 ]
- キャプチャーボードからデータを取り込み,Bitmapクラスを用いてBMPデータとしたいのですが,
キャプチャボード上メモリのデータををメインメモリにコピーする方法でつまづいています. 具体的にはカレントフレームのバッファ アドレスを返す関数 byte *fdmpciGetBuffer(void) があり(これはキャプチャーボードの仕様), ここからMarshal.Copyを用いてコピーしようとしています・・・が,以下のようなエラーが発生します. -------エラー エラー 1 'System.Runtime.InteropServices.Marshal.Copy(int[], int, System.IntPtr, int)' に最も適しているオーバーロード メソッドには無効な引数がいくつか含まれています。 C:\files\vcs\LaserPointer\LaserPointer\Form1.cs 200 13 LaserPointer エラー 2 引数 '1': 'byte*' から 'int[]' に変換できません。 C:\files\vcs\LaserPointer\LaserPointer\Form1.cs 200 26 LaserPointer ------- -------ソース unsafe private void CaptureBMP(){ int BMP_WIDTH=640; int BMP_HEIGHT=480; Bitmap bmp = new Bitmap(BMP_WIDTH, BMP_HEIGHT, PixelFormat.Format8bppIndexed); BitmapData bmp_data = bmp.LockBits(new Rectangle(0, 0, BMP_WIDTH - 1, BMP_HEIGHT - 1), ImageLockMode.ReadWrite, PixelFormat.Format8bppIndexed); Marshal.Copy(fdmpciGetBuffer(), 0, bmp_data.Scan0, BMP_WIDTH * BMP_HEIGHT); bmp.UnlockBits(bmp_data); pictureBox1.Image = bmp; } ------- C++でいうMemCpyみたいな奴があれば解決するのか?とも思うのですが, やり方が分かりません. どなたかご教授下さい.
|

|