0

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;
}

しかし、保存された画像には、描かれた円は含まれていません。に置き換えるkAlpha_8_SkColorTypekN32_SkColorType、期待される結果が得られます。8ビットのグレースケール画像に円を描くにはどうすればよいですか? 64 ビット Windows マシンで Visual Studio 2013 を使用しています。

kN32_SkColorType タイプの結果 kAlpha_8_SkColorType の結果

4

1 に答える 1

0

kAlpha_8_SkColorType よりも kGray_8_SkColorType を使用する必要があります。ビットマップ マスクに使用される kAlpha_8_SkColorType。

于 2016-01-01T04:51:28.730 に答える