2015-10-14 36 views
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

回答

0

你應該使用kGray_8_SkColorType比kAlpha_8_SkColorType。 用於位圖掩碼的kAlpha_8_SkColorType。