2012-08-16 55 views
0

我有一個CALayer,它是ImageView的子圖層。這顯示了一個圖像,用戶可以調整大小/旋轉等。在CA層上繪圖

我想讓用戶能夠在PanGesture上繪製圖像(擦除圖像) - 如果圖像是原始的大小(用戶還沒有嘗試調整大小/旋轉),但只要用戶調整大小/旋轉並再次嘗試,他/她可以在圖像上繪製的線條將隨圖像一起縮放(即,如果用戶縮小圖像層的大小,繪製線將被減半,並且如果用戶將圖像層旋轉45度,則平移將繪製對角線)。

我目前正試圖通過繪製,然後設置與新創建self.image2的layer.contents(image2Position是層的屏幕上的當前位置)來做到這一點:

UIGraphicsBeginImageContextWithOptions(self.image2.size, NO, 0.0); 
    [self.image2 drawInRect:CGRectMake(0, 0, self.image2.size.width, self.image2.size.height)]; 

    [eraser drawAtPoint:CGPointAdd2(CGPointAdd(currentPoint, CGPointMake(-center.x, -center.y)), CGPointMake(-self.image2Position.x, -self.image2Position.y)) blendMode:kCGBlendModeDestinationOut alpha:1]; 

    self.image2 = UIGraphicsGetImageFromCurrentImageContext(); 

如何我是否可以確保用戶可以在相同的座標系中繪製相同大小的線條,而不管他/她如何旋轉/調整圖像大小?

回答

0

計算你的圖像的比例。 0.5和調整lineWidth(我假設你使用UIBezierPath,它比非優化的CGPath更快)。好的,這很簡單。現在你需要改變你的CALayer並相應地旋轉你的UIBezierPath。這是一個有點硬,由於大小等等等等

  • 檢查點是內部的CALayer使用convertPoint:toLayer:或convertPoint:fromLayer:

  • 使用此轉換點來繪製此UIBezierPath。

+0

謝謝,convertPoint:toLayer正是我所需要的! – HHHH 2012-08-17 22:09:38