我正在编写一个iPad应用程序,我在其中渲染表示形状的XML对象到屏幕上的图形 . 我试图渲染的对象之一是弧 . 基本上这些弧为我提供了一个边界矩形以及一个开始和结束角度 .
给定属性:
-
x
-
y
-
宽度
-
身高
-
startAngle
-
endAngle
使用这些值,我需要绘制弧(基本上是椭圆的一部分) . 我不能使用以下内容:
UIBezierPath *arc = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(x, y, width, height)];
[UIColor blackColor] setStroke];
[arc stroke];
因为它绘制了一个完整的椭圆 . 基本上我需要上面但是它需要考虑开始和结束角度,因此只显示椭圆的一部分 . 我认为这将涉及绘制三次贝塞尔曲线或二次贝塞尔曲线 . 问题是我不知道如何用我给出的信息计算起点,终点或控制点 .
3 回答
您可以通过在椭圆的绘图周围设置剪辑路径来实现您想要的效果 .
裁剪的确切半径并不重要 . 它需要足够大,以便它只在末端夹住椭圆,而不是通过所需的弧 .
这个类别会有所帮助 .
您将不得不使用
addQuadCurveToPoint:controlPoint:
而不是bezierPathWithOvalInRect.
方法定义如下: -
即CGPoint是两个参数的参数(输入) .
您还必须在调用
addQuadCurveToPoint
之前使用moveToPoint:
设置起点,该点将充当当前点(因为您可以看到它们的无起点作为方法中的参数) .在你的情况下,你会有
1> x,y作为起点
2> x宽度和y高度作为 endpoints
你不需要这里的角度,或者你可以实现你的逻辑来使用角度 . 上传图像以使事情清楚 .