Pergunta

Saudações.

Em C #: Se eu tiver um int [] matriz declarada como este

int[] array = new array[size];

existe uma maneira de obter o IntPtr a partir desta matriz?

A coisa é que eu estou usando o framework EmguCV, e há um construtor para criar uma imagem que tem um IntPtr para os dados de pixel, a fim de construir uma imagem de uma matriz (int []).

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

Pela maneira, se alguém poderia me disse como calcular a passo, que seria ótimo.

Foi útil?

Solução

Você deve ser capaz de fazer isso sem código inseguro usando GCHandle. Aqui está um exemplo:

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

Outras dicas

Use o código inseguro, como este:

unsafe
{
  fixed (int* pArray = array)
  {
    IntPtr intPtr = new IntPtr((void *) pArray);
  }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top