Frage

Grüße.

In C #: Wenn ich ein int [] Array wie folgt erklärt

int[] array = new array[size];

gibt es eine Möglichkeit, die IntPtr aus dieser Reihe zu bekommen?

Die Sache ist, dass ich den EmguCV Rahmen bin mit, und es gibt ein Konstruktor ein Bild zu erzeugen, die einen IntPtr auf die Pixeldaten nehmen, um ein Bild aus einem Array (int []) zu bauen.

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

übrigens, wenn mir jemand sagen können, wie Sie den Schritt zu berechnen, das wäre toll.

War es hilfreich?

Lösung

Es soll möglich sein, dies mit GCHandle ohne unsicheren Code zu tun. Hier ist ein Beispiel:

GCHandle handle = GCHandle.Alloc(array, GCHandleType.Pinned);
try
{
    IntPtr pointer = handle.AddrOfPinnedObject();
}
finally
{
    if (handle.IsAllocated)
    {
        handle.Free();
    }
}

Andere Tipps

Mit unsicheren Code, wie folgt aus:

unsafe
{
  fixed (int* pArray = array)
  {
    IntPtr intPtr = new IntPtr((void *) pArray);
  }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top