2013-01-10 108 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);