1

这次我在 UIImageView 上执行双重操作时遇到问题意味着

1) Zoom+Flip the Image 

2)Zoom + Reverse the Image 

3)Zoom + Flip or Reverse + Rotate(+- 90)deg

所以请帮助找出这个问题的解决方案。在这种情况下,对于缩放,我使用 GuestureRecognizer 进行翻转+Revesing+Rotating UIImageView 我使用 UIButton 进行这些操作,所以我如何通过 UIImage 上的组合来处理这些操作

究竟是什么问题当我放大或缩小图像的同时我想旋转(+-90 度)或翻转或反转图像在精确的放大或缩小位置但那个时候图像被重置然后执行我想在 UIImage 上同时进行旋转、翻转、反转等相应的操作

我的代码为

if (btnNames == "Rotate R") 
 {
 Angle = deg + 90;
 imgview.Transform = CGAffineTransform.MakeRotation (Angle * (float)Math.PI / 180); 
 return Angle;
 } else
 { 
 Angle = deg - 90; 
 imgview.Transform = CGAffineTransform.MakeRotation (Angle * (float)Math.PI / 180); 
  return Angle; 

}

对于反向

CGAffineTransform transform = CGAffineTransform.MakeScale (-1, 1); 
imgView.Transform = transform;
return  true; 

============ 用于翻转

if (flips == false) 
 { 
CGAffineTransform transform = CGAffineTransform.MakeScale (1, -1); 
 imgView.Transform = transform; 
return  true; 
 }

我实现的这段代码可以很好地单独执行操作。但我想同时在 UIImage 上工作

4

3 回答 3

1

我会推荐:

  • 放置UIImage在一个UIScrollView带缩放的设置中
  • 修改您UIImage的 'sTransform以进行反向、旋转等。

要设置缩放:

yourScroller.MaximumZoomScale = 5;
yourScroller.MinimumZoomScale = 1;
yourScroller.ViewForZoomingInScrollView = _ => yourImage;

旋转的一个例子是:

yourImage.Transform.Rotate (Math.PI / 2)

玩弄它,UIScrollView应该在图像上修改相同Transform的内容,所以一切都应该协同工作。

于 2012-08-16T12:23:13.967 回答
0

我不确定我是否真的理解你的意思,但听起来你试图通过像这样设置UIView'transform属性来对图像进行更多的转换(示例):

myView.transform = scale;
myView.transform = flip;
myView.transform = rotate;

然后发生的事情是,只有最后一个“是活动的:在视图上。

你应该做的是“保持/保存”当前的转换,并在新的转换后附加CGAffineTransformConcat如下:

myView.transform = scale;
myView.transform = CGAffineTransformConcat(myView.transform, flip);
myView.transform = CGAffineTransformConcat(myView.transform,rotate);

请记住,对于某些转换,连接顺序很重要!

于 2012-08-16T13:22:35.233 回答
0

可以通过将转换应用于现有转换来组合转换:

CGAffineTransform transform = CGAffineTransformIdentity;

// Rotate
if (btnNames == "Rotate R") {
    Angle = deg + 90;
    transform = CGAffineTransformRotate(transform, Angle * (CGFloat)Math.PI / 180);
} else {
    Angle = deg - 90;
    transform = CGAffineTransformRotate(transform, Angle * (CGFloat)Math.PI / 180);
}

// Reverse
transform = CGAffineTransformScale(transform, -1, 1);

// Flip
if (!flips) {
    transform = CGAffineTransformScale(transform, 1, -1);
}

// Apply combined transformation
imgView.transform = transform;
于 2012-08-16T13:36:50.663 回答