0
我正在嘗試使用skia進行一些基本繪製。由於我正在處理灰度圖像,因此我想使用相應的顏色類型。我想要使用的最小示例是:爲什麼我無法渲染到保存8位灰度位圖的Skia畫布上
int main(int argc, char * const argv[])
{
int width = 1000;
int heigth = 1000;
float linewidth = 10.0f;
SkImageInfo info = SkImageInfo::Make(
width,
heigth,
SkColorType::kAlpha_8_SkColorType,
SkAlphaType::kPremul_SkAlphaType
);
SkBitmap img;
img.allocPixels(info);
SkCanvas canvas(img);
canvas.drawColor(SK_ColorBLACK);
SkPaint paint;
paint.setColor(SK_ColorWHITE);
paint.setAlpha(255);
paint.setAntiAlias(false);
paint.setStrokeWidth(linewidth);
paint.setStyle(SkPaint::kStroke_Style);
canvas.drawCircle(500.0f, 500.0f, 100.0f, paint);
bool success = SkImageEncoder::EncodeFile("B:\\img.png", img,
SkImageEncoder::kPNG_Type, 100);
return 0;
}
但是,保存的圖像不包含繪製的圓。如果我用kN32_SkColorType
替換kAlpha_8_SkColorType
,我會得到預期結果。我怎樣才能將圓圈繪製到8位灰度圖像上?我正在64位Windows機器上使用Visual Studio 2013。
kN32_SkColorType type result kAlpha_8_SkColorType result