在Android画布上绘制一个空心圆

3

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

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);

如何保持圆的中心透明?

我使用了两张图片来实现这个,就能奏效了... 如果您认为这有帮助,请告诉我,我会发帖说明如何做到这一点... - GhostDerfel
使用两张图片效率较低,也无法达到我想要的结果。 - Matt Clark
我在这里不是为了说你想要实现什么,但我的方法的结果正是你所绘制的,并且我在我的项目中使用动态内容,它是一个圆形日历选择器 :) - GhostDerfel
如果造成问题的理解不清楚,我向您道歉。上面是我已经拥有的屏幕截图,然而,圆圈内部是由Color.LTGRAY设置的颜料决定的。我不想在内部画一个圆圈,我只想要外环。原因是,如果圆圈中心有其他物体,比如文本,它们将被圆圈覆盖。使用图像也不太有效,因为它们必须被重新调整大小,这只会绘制任意形状。 - Matt Clark
你可以尝试将样式设置为Paint.Style.STROKE。 - GhostDerfel
1
这个回答解决了你的问题吗?Android画布绘制矩形 - Vega
2个回答

13

按要求翻译如下:

需要解决的问题是将样式设置为Paint.Style.STROKE


尽管这个答案看起来是正确的,但被认为是低质量的。请让你的答案更具可编译性,例如添加解释和示例代码。 - Greg

2
画布中的空心圆。最初的回答:在canvas中绘制一个空心圆。
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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接