Quartz 2D Path旋转

时间:2009-11-18 13:56:30

标签: iphone cocoa-touch quartz-2d

我对Quartz 2D相当新。

想象一下以下场景:

你有一个圆形的迷你地图视图。 我正在地图上绘制三角形(弧现在不重要)。此形状代表可见区域。

当用户改变方向时,我需要沿迷你地图旋转三角形。

目前这是如何绘制路径的:

CGAffineTransform transform = CGAffineTransformMakeRotation(angleInRadians);

CGPath visibleAreaPath = CGPathCreateMutable();

CGPathMoveToPoint(visibleAreaPath, &transform, miniMapCenter.x, miniMapCenter.y);
CGPathAddLineToPoint(visibleAreaPath, &transform, 18.0, 8.0);
CGPathAddLineToPoint(visibleAreaPath, &transform, 66.0, 8.0);

CGPathCloseSubpath(visibleAreaPath);

然后我使用CAShapeLayer绘制路径,如下所示:

CALayer *rootLayer = [visibleAreaView layer];

visibleAreaShape = [CAShapeLayer layer];
[visibleAreaShape setFillColor:[UIColor colorWithHue:0.584 saturation:0.8 brightness:0.9 alpha:0.6].CGColor];
[visibleAreaShape setFillRule:kCAFillRuleNonZero];
[visibleAreaShape setAnchorPoint:CGPointMake(0.5, 0.5)];
[rootLayer addSublayer:visibleAreaShape];
[visibleAreaShape setPath:visibleAreaPath];

路径正在旋转,但不是基于给定的原点。 请记住,设置图层的锚点对我没有帮助,因为我想要的是旋转路径(最终我甚至不需要显示它,因为我将使用它来确定哪些点在迷你上可见图)。

关于如何实现这一目标的任何想法? 谢谢。

1 个答案:

答案 0 :(得分:0)

我建议你以极坐标形式存储点,并在需要时转换为路径。在极坐标中旋转非常容易(只需更改theta值)。