我对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];
路径正在旋转,但不是基于给定的原点。 请记住,设置图层的锚点对我没有帮助,因为我想要的是旋转路径(最终我甚至不需要显示它,因为我将使用它来确定哪些点在迷你上可见图)。
关于如何实现这一目标的任何想法? 谢谢。
答案 0 :(得分:0)
我建议你以极坐标形式存储点,并在需要时转换为路径。在极坐标中旋转非常容易(只需更改theta值)。