如何绘制不同厚度的圆弧

时间:2014-10-13 10:25:10

标签: android android-layout

我需要在不同厚度的android中画一个弧,如下图所示,

Arc from from some startDegree to endDegree with varying thickness

是否可以绘制弧形并剪辑它?因为弧可以在任何度数之间(startDegree到endDegree),我不能用路径来实现它。

所以我的要求是这样的,

example code snippet

请帮助我实现上述目标。

2 个答案:

答案 0 :(得分:1)

我认为,您可以使用Path

执行此操作

你的弧边有:

  • 水平直线
  • 上弧
  • 垂直直线
  • 下弧

所以,你需要花一些数学来计算这些坐标和参数。

<强> UPD:
请看看this question 好像我在那里找到了这条曲线的确切公式。

UPD 2:
关于如何在画布上绘制螺旋,我认为不是很糟糕的解决方案就像here(使用javascript,但没关系 - 这个想法是一样的)。 唯一的事情是:需要在笛卡尔坐标系中编写螺旋方程。尝试自己做。如果你失败了,那就问我。

UPD 3: 检查上面提到的问题的UPD2部分,找到笛卡尔坐标系参数化。 它可能包含错误,我没有自己检查,但这个想法应该是明确的。

希望它有所帮助。

答案 1 :(得分:0)

以下功能可行,请记住转换为弧度的角度(以度为单位)。请将数据类型更改为double:

void spiralArc(int startAngle, ind endAngle, int centreX, int centreY,int radius, int maxThickness)
{
    int iRadius;
    for(int ang=startAngle;ang<=endAngle;ang++)
    {
        iRadius = radius - (int)((double) maxThickness*(double)ang/(double)endAngle);
        drawLine(centreX+(radius*cos(ang)), centreY+(radius*sin(ang)), centreX+(iradius*cos(ang)), centreY+(iradius*sin(ang)))
    }
}