12

ご挨拶。

C# の場合: このように宣言された int[] 配列がある場合

int[] array = new array[size];

この配列から IntPtr を取得する方法はありますか?

問題は、私が EmguCV フレームワークを使用していることです。配列 (int[]) からイメージを構築するために、IntPtr をピクセル データに取り込むイメージを作成するコンストラクタがあります。

Image<Gray,Int32> result = new Image<Gray,int>(bitmap.Width,bitmap.Height,stride,"**array.toPointer??**");

ところで、誰かがストライドの計算方法を教えてくれたら、それは素晴らしいことです.

4

2 に答える 2

23

を使用すると、安全でないコードを使用せずにこれを実行できるはずですGCHandle。以下にサンプルを示します。

GCHandle handle = GCHandle.Alloc(array, GCHandleType.Pinned);
try
{
    IntPtr pointer = handle.AddrOfPinnedObject();
}
finally
{
    if (handle.IsAllocated)
    {
        handle.Free();
    }
}
于 2010-02-10T21:29:02.783 に答える
9

次のように、安全でないコードを使用します。

unsafe
{
  fixed (int* pArray = array)
  {
    IntPtr intPtr = new IntPtr((void *) pArray);
  }
}
于 2010-02-10T16:27:49.527 に答える