我有一个CALayer,它是ImageView的子层。这显示了一个用户可以调整大小/旋转等图像。
我希望能够让用户使用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)
计算图像的比例,例如: 0.5并调整lineWidth(我假设您使用UIBezierPath,它比非优化的CGPath更快)。好的,这很容易。现在,您需要转换CALayer并相应地旋转UIBezierPath。由于尺寸等原因,这有点困难。
使用convertPoint:toLayer:或convertPoint:fromLayer检查点是否在CALayer中:
使用此转换点绘制此UIBezierPath。