首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CGBitmapContext构造函数中的无效参数

CGBitmapContext构造函数中的无效参数
EN

Stack Overflow用户
提问于 2017-09-17 12:39:44
回答 1查看 752关注 0票数 2

我试图在Xamarin.iOS项目中使用CGBitmapContext构造函数创建一个空白位图。但是,无论我如何尝试,我都会得到错误的"System.Exception: Invalid parameters to context creation"

示例代码:

代码语言:javascript
复制
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作为第一个参数,以便系统分配数据。在最后一个参数中,我尝试了各种标志。我总是犯同样的错误。什么参数是错误的?在上面的代码中需要修改什么才能让它执行呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-18 07:23:47

我将最后一个参数从CGBitmapFlags.ByteOrderDefault更改为CGBitmapFlags.PremultipliedLast,错误消失了。

请参阅CGBitmapFlags枚举

就像链接说的

此枚举指定位图中组件数据的布局信息。 此枚举确定数据在内存中的组织,并包括颜色模型、是否存在alpha通道以及组件值是否已被预乘。

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

出于同样的原因,如果选择CreateDeviceCmykCGBitmapFlags.None将是合适的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46264177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档