与路径圆顶角

问题描述:

我想剪辑在Java中画布的左上角和右上角。我知道你可以在所有角落都使用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); 
}  
+2

可能的重复[如何使用Android画布绘制矩形只有顶部和顶部的圆角?](http://*.com/questions/5896234/how-to-use-android-canvas-to-抽取一个矩形与 - 仅-左上和 - topright-COR) – 2017-05-22 10:54:08

你可以破解它。只需设置RectF较大的尽可能多的像素作为圆角这样的半径:

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

我猜你将不得不设置油漆颜色完全透明(0x00fffffff)。

您可以使用另一种方法重载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); 

我通过上面的代码解决了这个问题。