Вы не можете инициализировать буферы таким образом.Вы можете сделать это:
class MyImage
{
Int32[] _Buffer;
Int32* _Pointer;
GCHandle _Handle;
public MyImage() {
_Buffer = new Int32[w * h];
_Handle = GCHandle.Alloc(_Buffer, GCHandleType.Pinned);
_Pointer = (Int32*)_Handle.AddrOfPinnedObject().ToPointer();
}
}
Но не делайте этого, это помешает GC выполнять свою работу.Лучше использовать fixed каждый раз, когда вы хотите получить доступ к вашему буферу.
Images
При работе с изображениями вы должны использовать Int32 [], поскольку Int32 [,]медленнее (см. msdn).Вы можете просто создать и изменить изображение следующим образом:
Int32[] buffer = new Int32[width * height];
Доступ:
buffer[x + (width * y)] ...