Android 同心圆偏离中心

Android 同心圆偏离中心,android,android-canvas,Android,Android Canvas,我试图画两个同心圆(第二个用来切掉一个孔),但它们没有被渲染成同心圆(见下图) 我将Canvas#drawArc方法与RectF结合使用,如下所示: mCircumference = Math.min(mWidth, mHeight); float halfCircumference = mCircumference / 2; float halfWidth = mWidth / 2; float halfHeight = mHeight / 2; mOuterCircleRect = new

我试图画两个同心圆(第二个用来切掉一个孔),但它们没有被渲染成同心圆(见下图)

我将Canvas#drawArc方法与RectF结合使用,如下所示:

mCircumference = Math.min(mWidth, mHeight);
float halfCircumference = mCircumference / 2;
float halfWidth = mWidth / 2;
float halfHeight = mHeight / 2;
mOuterCircleRect = new RectF(halfWidth - halfCircumference, halfHeight - halfCircumference, mCircumference, mCircumference);
mInnerCircumference = mCircumference - 2 * mThickness;
float halfInnerCircumference = mInnerCircumference / 2;
mInnerCircleRect = new RectF(halfWidth - halfInnerCircumference, halfHeight - halfInnerCircumference, mInnerCircumference, mInnerCircumference);
日志显示如下:

circumference=36
innerCircumference=32
mOuterCircleRect=RectF(0.0, 0.0, 36.0, 36.0)
mInnerCircleRect=RectF(2.0, 2.0, 32.0, 32.0)
这在我看来还行,但结果并不好:

绘制例程:

//debug
canvas.drawColor(0xFFFF0000);

//background
mOverlayCanvas.drawArc(mOuterCircleRect, 360, 360, false,
        mPaintBackground);
if(mInnerCircumference > 0)
{
    mOverlayCanvas.drawArc(mInnerCircleRect, 360, 360, false, mPaintEraser);
}

//draw on canvas
canvas.drawBitmap(mOverlay, 0, 0, null);
和“颜料”


我做错了什么?

内矩形没有在外矩形中居中。左侧/顶部距离为2.0,但右侧/底部距离为4.0。变量mInnerCircleRect应定义为:

mInnerCircleRect = RectF(2.0, 2.0, 34.0, 34.0)
我的坏:)我假设它是(x,y,w,h)而不是(l,t,r,b):)
mInnerCircleRect = RectF(2.0, 2.0, 34.0, 34.0)