Xamarin.ios CGBitmapContext构造函数中的参数无效

Xamarin.ios CGBitmapContext构造函数中的参数无效,xamarin.ios,cgbitmapcontext,Xamarin.ios,Cgbitmapcontext,我正在尝试使用在Xamarin.iOS项目中创建一个空白位图。但是,无论我尝试什么,我都会得到错误“System.Exception:上下文创建的参数无效” 示例代码: const int width = 100; const int height = 100; const int bytesPerPixel = 4; const int bitsPerComponent = 8; var intBytes = width * height * bytesPerPixel; byte[] pix

我正在尝试使用在Xamarin.iOS项目中创建一个空白位图。但是,无论我尝试什么,我都会得到错误
“System.Exception:上下文创建的参数无效”

示例代码:

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传递。我尝试使用null作为第一个参数,以便系统分配数据。我在最后一个参数中尝试了各种标志。我总是犯同样的错误。什么参数是错误的?上面的代码需要做哪些更改才能执行?

我将最后一个参数从
cgitmapflags.ByteOrderDefault
更改为
cgitmapflags.premultipledast
,错误消失

正如链接所说

此枚举指定位图中组件数据的布局信息

此枚举确定数据的内存组织,并包括颜色模型、是否存在alpha通道以及组件值是否已预乘

我认为我们必须选择相应的标志来匹配数据信息,尤其是颜色模型


出于同样的原因,如果您选择CreateDeviceCmyk
CGBitmapFlags.None
将不合适。

谢谢,这确实有效。我没有意识到颜色空间决定了字节的排列