Неверные параметры в конструкторе 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 будет уместно.

Другие вопросы по тегам