我认为您可以通过绘制具有部分重叠的三条线来解决此问题:
Paint.Cap.ROUNDPaint.Cap.BUTT假设您的输入数据是
float lineWidth = 20;
float lineRadius = 100;
float cornerRadius = 2;
Run Code Online (Sandbox Code Playgroud)
你按以下方式走,
float width, radius;
// Draw outer lines
paint.setStrokeCap(Paint.Cap.ROUND);
width = cornerRadius * 2;
// Draw inner
radius = lineRadius - lineWidth/2f + cornerRadius;
canvas.draw(...)
// Draw outer
radius = lineRadius + lineWidth/2f - cornerRadius;
canvas.draw(...)
// Draw center
paint.setStrokeCap(Paint.Cap.BUTT);
width = lineWidth - 2f*cornerRadius;
radius = lineRadius;
canvas.draw(...)
Run Code Online (Sandbox Code Playgroud)
您可能需要稍微改变中心线的弧角(它必须cornerRadius更长,在每一侧),但这很容易。
| 归档时间: |
|
| 查看次数: |
4617 次 |
| 最近记录: |