Es ist möglich, einen IntPtr aus einem int [] array zu bekommen?
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.
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