在Android Canvas上绘制一个空心圆

时间:2014-01-27 17:16:27

标签: android android-canvas

我正在创建一个用户可以选择角度的自定义视图。下面是最终结果的示例:

enter image description here

我使用以下代码实现此目的:

mPaint.setColor(Color.BLACK);
canvas.drawCircle((int) (mSize.right / 2), (int) (mSize.bottom / 2),
        mWidthOutside, mPaint);

mPaint.setColor(Color.LTGRAY);
canvas.drawCircle((int) (mSize.right / 2), (int) (mSize.bottom / 2),
        mWidthInside, mPaint);

这样做的问题是,背景是静态的LTGRAY,我希望它是透明的。

如何让圆圈的中心保持透明?

我尝试了以下内容,希望drawArc函数只创建一条画线宽度的线条,而不是填充中心。它在面部填充中心。

RectF rectF = new RectF(centerX - mRadius, centerY - mRadius, centerX
            + mRadius, centerY + mRadius);
canvas.drawArc(rectF, 0, 360, false, mPaint);

关于如何保持圆心的透明度的建议?

2 个答案:

答案 0 :(得分:8)

正如问:) 解决方案是将样式设置为Paint.Style.STROKE

答案 1 :(得分:1)

在画布上空心圆。

Bitmap bitmap=Bitmap.createBitmap(500,500, Bitmap.Config.ARGB_8888);
    Canvas canvas=new Canvas(bitmap);
    //canvas.clipPath(,Region.Op.DIFFERENCE);
    Paint paint=new Paint();
    paint.setColor(Color.RED);
    paint.setStrokeWidth(140);
    paint.setStyle(Paint.Style.STROKE);
    canvas.drawCircle(250,250,150,paint);
    imageView.setImageBitmap(bitmap);