1

以下のコードを使用して、ビットマップの角を丸くしようとしています。問題は、ペイントの色を何に設定しても、たとえばColor.TRANSPARENT、常に黒になることです。ビットマップのコーナーを黒くするだけでなく、実際にクリップするにはどうすればよいですか?

ありがとう!

    public static Bitmap roundCorners(Bitmap src, int radius) {
    //Create a *mutable* location, and a canvas to draw into it
    int width = src.getWidth();
    int height = src.getHeight();
    Bitmap result = Bitmap.createBitmap(width, height, Config.ARGB_8888);
    Canvas canvas = new Canvas(result);
    Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
    RectF rect = new RectF(0, 0, width, height);
    Shader bitmapShader = new BitmapShader(src, TileMode.CLAMP, TileMode.CLAMP);
    paint.setColor(0xFF000000);
    paint.setShader(bitmapShader);
    canvas.drawRoundRect(rect, radius, radius, paint);
    return result;
}
4

1 に答える 1

4

1 回のパスで機​​能する、より簡単な方法があります。丸みを帯びた四角形を描画するだけで、ペイントに BitmapShader を設定します。これにより、丸みを帯びた四角形がビットマップで塗りつぶされます。xfermode を変更したり、drawBitmap を呼び出したりする必要はありません。

于 2012-11-27T17:30:07.213 に答える