2

Java で Canvas の左上隅と右上隅をクリップしようとしています。すべてのコーナーに使用できることは理解していますがaddRoundRect、上部のコーナーだけをどうすればよいかわかりません。

これは私が現在持っているものです:

@Override
protected void onDraw(Canvas canvas) {
    float radius = 12f;
    Path clipPath = new Path();
    RectF rect = new RectF(0, 0, this.getWidth(), this.getHeight());
    //uh...
    //clipPath.addRoundRect(rect, radius, radius, Path.Direction.CW);

    canvas.clipPath(clipPath);
    super.onDraw(canvas);
}    
4

2 に答える 2

8

次のように、別のオーバーロード メソッド addRoundRect() を使用できます。

int width  = view.getWidth();
int height = view.getHeight();      
float[] radii = {0, 0, 0, 0, 0, 0, 0, 0};
if( mRadiusTop ) {
    radii[0] = mRadius;
    radii[1] = mRadius;
    radii[2] = mRadius;
    radii[3] = mRadius; 
}
if( mRadiusBottom ) {
    radii[4] = mRadius;
    radii[5] = mRadius;
    radii[6] = mRadius;
    radii[7] = mRadius;
}

clipPath.addRoundRect(new RectF(0, 0, width, height), radii, Path.Direction.CW);
canvas.clipPath(clipPath);

上記のコードで問題を解決しました。

于 2015-11-12T07:49:27.167 に答える
5

あなたはそれをハックすることができます。次のように、RectF を丸みを帯びた角の半径と同じピクセル数だけ大きく設定するだけです。

RectF rect = new RectF(0, 0, this.getWidth(), this.getHeight() + 12.0f); // draw a larger rect

ペイントの色を完全な透明度 (0x00fffffff) に設定する必要があると思います。

于 2013-03-27T22:43:22.940 に答える