4

Android の Canvas に単純な円を描いています。ここで、いくつかのグラデーション カラーで塗りつぶす必要がありますが、実際には滑らかではありません。これは私がやったことです:

protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    rectF.set(20, 20, this.get_Width() - this.get_Width()/10, this.get_Width() - this.get_Width()/10);
    RadialGradient gradient = new RadialGradient(200, 200, 200, 0xFFFFFFFF,
            0xFF000000, android.graphics.Shader.TileMode.CLAMP);
    Paint mPaint = new Paint();
    mPaint.setDither(true);
    mPaint.setShader(gradient);
    canvas.drawCircle(getWidth()/2, getHeight()/2, getWidth()/3, getGradient());
    invalidate();
}

そして、これは結果です:

読み取り勾配

私の質問は: HQ 放射状グラデーションを作成する方法はありますか?

4

2 に答える 2

1

描画を行うActivityを含む に次を追加してみてください。View

@Override
public void onAttachedToWindow() {
   super.onAttachedToWindow();
   Window window = getWindow();
   // Eliminates color banding
   window.setFormat(PixelFormat.RGBA_8888);
}
于 2012-09-24T15:33:18.857 に答える
1

最後に、Paint オブジェクトを次のように初期化する必要があります。

Paint p = new Paint(Paint.ANTI_ALIAS_FLAG);

これにより、境界がきれいになります。

そして@Waqasの回答で、色自体をより滑らかにします。

于 2012-09-24T15:49:54.873 に答える