在Android Canvas上绘制一个空心圆

问题描述 投票:2回答:2

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

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

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

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

android android-canvas
2个回答
8
投票

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


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);
© www.soinside.com 2019 - 2024. All rights reserved.