Неверные параметры в конструкторе CGBitmapContext
Я пытаюсь создать пустое растровое изображение в проекте Xamarin.iOS, используя конструктор (ы) CGBitmapContext. Однако, что бы я ни пытался, я просто получаю ошибку "System.Exception: Invalid parameters to context creation"
Пример кода:
const int width = 100;
const int height = 100;
const int bytesPerPixel = 4;
const int bitsPerComponent = 8;
var intBytes = width * height * bytesPerPixel;
byte[] pixelData = new byte[intBytes];
var colourSpace = CGColorSpace.CreateDeviceRGB();
using (var objContext = new CGBitmapContext(pixelData, width, height, bitsPerComponent, width * bytesPerPixel, colourSpace, CGBitmapFlags.ByteOrderDefault))
{
// ...
}
Я попытался изменить большинство параметров; Я попытался исправить блок данных и передать его как IntPtr. Я попытался использовать ноль в качестве первого параметра, чтобы система распределяла данные. И я попробовал различные флаги в последнем параметре. Я всегда получаю ту же ошибку. Какой параметр неверен? И что нужно изменить в приведенном выше коде, чтобы он выполнялся?
1 ответ
Я изменил последний параметр из CGBitmapFlags.ByteOrderDefault
в CGBitmapFlags.PremultipliedLast
и ошибка исчезнет.
обратитесь к перечислению CGBitmapFlags
Как сказано в ссылке
Это перечисление определяет информацию макета для данных компонента в растровом изображении.
Это перечисление определяет организацию данных в памяти и включает в себя цветовую модель, присутствует ли альфа-канал и были ли предварительно умножены значения компонентов.
Я думаю, что мы должны выбрать соответствующий флаг, чтобы соответствовать информации о данных, особенно цветовой модели.
По той же причине, если вы выберете CreateDeviceCmyk, CGBitmapFlags.None
будет уместно.