我想绘制一个使用Path定义的形状,笔触宽度为5,其中所有笔划都在Path内部,而不是内部笔划的一半和外部的一半。
谢谢,
卡尔
答案 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的设置宽度上绘制一个圆形的矩形边框,就可以得到一个边框。
代码:
<<
现在看来,它不是我想要的背景和边框之间有一些偏移的那个:
让我们试试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);
现在看起来是正确的:
答案 2 :(得分:1)
使用Canvas#clipPath(Path, Op)
。但请注意,在Android 3.0和reintroduced in 4.3中删除了对硬件加速画布中路径剪辑的支持。 3.0-4.2显然有workaround,但我没办法测试它。