У меня очень странная проблема.
Вот мой упрощенный код для объяснения:
class Bitmap1
{
public Bitmap nImage;
public IntPtr data;
public Bitmap1()
{
int w = 2450;
int h = 2450;
this.data = Marshal.AllocHGlobal(w*h);
nImage = new Bitmap(w, h, w, PixelFormat.Format8bppIndexed, data);
}
}
Когда w
и h
равны 2448 , все работает хорошо, если я вызываю конструктор.
Но когда h и w равны 2450 , у меня есть ArgumentException
, который, кажется, запускается по "новому растровому изображению (...);"
Я не могу понять, и в документации не сказано, что есть ограниченный размер для Marshal.AllocHGlobal
.
Что не так? Есть ли другие способы сделать то, что я хочу?
Большое спасибо.