2009-11-18 121 views
0

我对Quartz 2D相当陌生。石英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

你的意思是路径总是相对于superview旋转到相同的角度?换句话说,轮换不是累积的? – TechZen 2009-11-18 16:28:29

回答

0

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