2013-01-10 105 views
0

我通过绘制两条弧线绘制一条带边框的弧线,一条弧线比另一条弧线稍大。Android Canvas绘图弧边框

问题在于“略大”,这可能会导致边界不会始终保持全部。

Example

无论我绘制具有相同的半径的圆弧,我只是让它通过添加程度开始和二度结束(必须确保在弧两端的边框外是相等的)并增加笔画宽度。

在提供的图片中,较厚的边框边缘是最小的,我可以在它仍然可见的情况下制作。 (离内弧-1度)

我已经考虑绘制弧形轮廓,用四个独立调用两条直线来表示两端和两条弧线。这对我想达到的效果似乎相当低效。

我想知道如果任何人有任何建议,我还可以如何绘制边界即使最小化绘制/画布旋转调用的次数,如果可能的话。对于当前的解决方案

相关的代码示例:

Paint mOutlinePaint = new Paint(Paint.ANTI_ALIAS_FLAG); 
Paint mFillPaint = new Paint(Paint.ANTI_ALIAS_FLAG); 

mFillPaint.setStyle(Style.STROKE); 
mFillPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC)); 
mFillPaint.setColor(Color.TRANSPARENT); 
mFillPaint.setStrokeWidth(mValueWidth); 

mOutlinePaint.setStyle(Style.STROKE); 
mOutlinePaint.setStrokeWidth(mBorderWidth); 
mOutlinePaint.setColor(Color.WHITE); 

mRect.set(mHalfXSubRadius, mHalfYSubRadius, mHalfXAddRadius, mHalfYAddRadius); 
canvas.drawArc(mRect, ARC_START-1, MAX_ARC+2, false, mOutlinePaint); 
canvas.drawArc(mRect, ARC_START, MAX_ARC, false, mFillPaint); 

回答

0

ü不应该让你的圆弧大,而不是试图得出同样大小的圆弧(白色),X像素右,下,上,左,拐角(共有8张图纸)。

其中X是你想要的边框尺寸。

之后,在中间画出主弧(灰色)。

伪代码:

paint=white; 
drawArc(x,y+2); 
drawArc(x,y-2); 
drawArc(x+2,y+2); 
drawArc(x+2,y-2); 
drawArc(x-2,y+2); 
drawArc(x-2,y+2); 
drawArc(x+2,y); 
drawArc(x-2,y); 

paint=gray; 
drawArc(x,y);