Android - 描边内部路径

时间:2013-05-28 21:04:21

标签: android

我想绘制一个使用Path定义的形状,笔触宽度为5,其中所有笔划都在Path内部,而不是内部笔划的一半和外部的一半。

谢谢,

卡尔

3 个答案:

答案 0 :(得分:2)

似乎无法控制行程的位置(即内部,中部或外部)。有关更多信息,请参阅: Android Paint stroke width positioning

我的解决方案是在绘制时缩放笔画宽度,例如

final RectF rectF = new RectF(halfStrokeWidth, halfStrokeWidth, width - halfStrokeWidth, height - halfStrokeWidth);
canvas.drawRoundRect(rectF, roundX, roundY, paint);

答案 1 :(得分:1)

您可以使用CornerPathEffect类获取帮助!以绘制圆形形状为例。

使用canvas.drawRoundRect()方法绘制具有半径的背景颜色,并使用Paint设置Style.FILL,可以获得圆形矩形形状。然后使用相同的方法在Style.STROKE和paint的设置宽度上绘制一个圆形的矩形边框,就可以得到一个边框。

代码:

<<

现在看来,它不是我想要的背景和边框之间有一些偏移的那个:

before

让我们试试CornerPathEffect:

mBackgroundRectF.set(0, 0, mWidth, mHeight);
canvas.drawRoundRect(mBackgroundRectF, mRadius, mRadius, mBackgroundPaint);
// edge ajustment because paint stroke style is center align
float edge = mBorderWidth / 2;
mBackgroundRectF.set(edge, edge, mWidth - edge, mHeight - edge);
canvas.drawRoundRect(mBackgroundRectF, mRadius, mRadius, mBorderPaint);

现在看起来是正确的:

after

答案 2 :(得分:1)

使用Canvas#clipPath(Path, Op)。但请注意,在Android 3.0和reintroduced in 4.3中删除了对硬件加速画布中路径剪辑的支持。 3.0-4.2显然有workaround,但我没办法测试它。