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.

¿Fue útil?

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
scroll top