我有一个简单的三角形(作为气球尾巴),我试图曲线如下:
我的尾巴形状存储在CGMutablePathRef中,它的绘制如下:
- (void) drawPaths { CGContextRef context = UIGraphicsGetCurrentContext(); CGContextAddPath(context,self.mutablePath); CGPathRelease(mutablePath); CGColorRelease(fillColor); CGColorRelease(strokeColor); }
当我向这个算法(比如45度)输入一些角度时,我试图做到这一点,尾巴的旋转和曲线非常像上面的照片.旋转显然是一个容易的转变,但是让它曲线是我正在努力的.我意识到我可能需要使用:CGPathAddQuadCurveToPoint,但是我无法理解要设置为我的控制点,并获得不可预知的结果.即使这个辉煌的职位让我无能为力:Given a CGPath,how to make it curve?
有谁知道如何做到这一点?
解决方法
我假设你有或可以得到路径的原点的x和y坐标 – 气球上的路径的结束,而对于终点,三角形的尖端,你想要的每个路径.我们来调用原点(xorig,yorig)和终点(xend,yend).为了形成路径曲线,我们需要计算一个合理的二次曲线协调点,我们称之为(xc,yc).我相信以下坐标计算将为您产生合理的曲线:
xc = (xorig * 3 + xend) / 4; yc = (xorig + xend) / 2; CGPathAddQuadCurveToPoint(mutablePath,NULL,xc,yc,xend,yend).
为了使路径曲线不同,您可以在xc的计算中改变xorig和xend的权重.