Es posible obtener una IntPtr de una matriz int []?
Pregunta
Saludos.
En C #: Si tengo una [] int matriz declarada como esto
int[] array = new array[size];
Hay una manera de obtener el IntPtr de esta matriz?
Lo que pasa es que estoy usando el marco EmguCV, y no hay un constructor para crear una imagen que toma un IntPtr a los datos de píxeles, con el fin de construir una imagen de una matriz (int []).
Image<Gray,Int32> result = new Image<Gray,int>(bitmap.Width,bitmap.Height,stride,"**array.toPointer??**");
Por cierto, si alguien pudiera dicho cómo calcular la zancada, que sería grande.
Solución
Usted debe ser capaz de hacer esto sin código no seguro utilizando GCHandle
. Este es un ejemplo:
GCHandle handle = GCHandle.Alloc(array, GCHandleType.Pinned);
try
{
IntPtr pointer = handle.AddrOfPinnedObject();
}
finally
{
if (handle.IsAllocated)
{
handle.Free();
}
}
Otros consejos
Utilice código no seguro, como esto:
unsafe
{
fixed (int* pArray = array)
{
IntPtr intPtr = new IntPtr((void *) pArray);
}
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow