我希望能够通过获取触摸点来绘制更平滑的线条。
这条线是一种绘画,但是有很多拐角。我正在使用quad函数来绘制曲线,但是当点接近时,曲线有时会出现拐角。有什么方法可以解决这个问题?
我故意没有早回答这个问题,因为你正在使用Android API和Quad函数,我认为应该有一种方法可以增加绘制的二次贝塞尔曲线上的点数。我通过谷歌搜索没有找到任何东西,但我在等待有人发布使用Android API进行技巧操作的帖子。
看起来平滑度必须通过手动绘制更高分辨率的Bezier曲线来实现,使用代码: Quad函数正在绘制Quadratic Bezier Curve, 这里是一个很好的绘制Bezier曲线算法的链接,你需要做的就是增加曲线上的点数: 二次Bezier曲线的公式为:`
[x,y] =(1-t)2P0 + 2(1-t)tP1 + t2P2
`并且您必须使t更小才能使循环迭代更多,因此将有更多的点,您将能够绘制更平滑的曲线。
这里是有趣的代码(我稍微改动了一下,以便更容易解释):
double t = 0;
Point prevPoint = CalculateBezierPoint(t, p0, p1, p2, p3);
for(int i = 0; i <= 100; i++)
{
Point nextPoint = CalculateBezierPoint(t, p0, p1, p2, p3); //see this part from the link i have given
//Draw line from previous point to next point.
prevPoint = nextPoint;
t = t + (1/100)
}
t = t + (1/100)
(将该值除以您选择的更大段数,即i)。