我通过绘制两条弧线来绘制一条带边框的弧线,一条在另一条之上,第一条稍大一些。
问题在于“稍微大一点”,这最终可能导致边界并不总是一直都是圆形的。
我绘制的两条弧线具有相同的半径,我只是通过在起点增加一个度数和在结束点增加两个度数(确保弧线两端的边界相等)并增加笔划宽度来使其更大。
在提供的图片中,较厚的边框边缘是我可以做到的最小的边缘,而它仍然可见。(偏离内弧-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);