簡體   English   中英

CGBitmapContext構造函數中的參數無效

[英]Invalid parameters in CGBitmapContext constructor

我正在嘗試使用CGBitmapContext構造函數在Xamarin.iOS項目中創建空白位圖。 但是,無論我嘗試什么,我都會收到錯誤"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傳遞。 我嘗試使用null作為第一個參數,以便系統分配數據。 我在最后一個參數中嘗試了各種標志。 我總是遇到同樣的錯誤。 哪個參數錯誤? 為了使它執行,需要在上面的代碼中進行哪些更改?

我將最后一個參數從CGBitmapFlags.ByteOrderDefault更改為CGBitmapFlags.PremultipliedLast ,錯誤消失了。

參考CGBitmapFlags枚舉

正如鏈接所說

此枚舉指定位圖中組件數據的布局信息。

此枚舉確定數據在內存中的組織,並包括顏色模型,是否存在alpha通道以及組件值是否已預乘。

我認為我們必須選擇相應的標志來匹配數據信息,尤其是顏色模型。

出於相同的原因,如果選擇CreateDeviceCmyk ,則CGBitmapFlags.None將不適用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM