2009-11-18 167 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值)。