2013-05-17 180 views
0

我有以下情况,我试图做一个照片编辑器,我需要做的规模,翻译和周围的景色中心旋转操作的图像变换旋转和平移问题

的问题是,如果我申请之后90度翻译:左边是翻译顶部和锚点是不是该视图的转换后的中心

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 

    // ImageView 
    v = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 768, 500)]; 
    [v setBackgroundColor:[UIColor redColor]]; 

    // ImageView's Image 
    UIImage *img = [UIImage imageNamed:@"_my.jpg"]; 
    [v setImage:img]; 
    v.contentMode = UIViewContentModeScaleAspectFit; 
    v.layer.anchorPoint = CGPointMake(0.5, 0.5); 
    [self.view setBackgroundColor:[UIColor clearColor]]; 

    // UiView containing ImageView 
    vc = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 768, 500)]; 
    [vc addSubview:v]; 
    [self.view addSubview:vc]; 
} 

- (IBAction)Click:(id)sender { 
    // Translate 
    if ([sender tag] == 1) { 
     CGAffineTransform t0 = v.transform; 
     CGAffineTransform t1 = CGAffineTransformTranslate(t0, 10.0, 0.0); 
     v.transform = t1; 
    } 
    // Rotate 
    if ([sender tag] == 2) { 
     CGAffineTransform t0 = v.transform; 
     CGAffineTransform t1 = CGAffineTransformRotate(t0, DEGREES_TO_RADIANS(10)); 
     v.transform = t1; 
    }  
} 

有谁知道我怎么能保持的中心视场为锚点和后翻译旋转才能正常工作?

TX

+0

容易它删除翻译,应用旋转,然后应用转换回http://en.wikipedia.org/wiki/Transformation_(function方式) – SAKrisT

+0

我需要翻译,规模和多次旋转动作任何顺序,目标是用户可以做任何他想要的图像,以适应它在裁剪区域 –

+0

好吧,但无论如何它应该有正确的转换顺序检查这个http://www.cosc.brocku.ca/产品/ 3P98 /课程/讲座/ 2d_3d_xforms / – SAKrisT

回答

0

转换与产地

然而,特别是在2D,你经常需要一个原点移位添加到您的转型。这通常添加到beggining,并且也必须被否定,所以:

//世界矩阵与产地

-OriginTranslation * Scale * Rotation * PositionTranslation 

同样的事情也可以用一个视图矩阵来完成,但是你把它添加到用Origin

-PositionTranslation * -Rotation * Zoom * OriginTranslation 

有选择性地

转换

//视图矩阵:结束,这个时候你不要否定它

也有一些情况下,您想要有一个原点位移,但您希望它只影响您的缩放和旋转,但不会影响您的翻译。处理该问题的方法是在到达翻译组件之前撤消原点转换。例如,与世界矩阵:

我不记得,确切地说,转型如何申请视图,其中一个应该是工作。

//世界矩阵与原产地的尺度和旋转

-OriginTranslation * Scale * Rotation * OriginTranslation * PositionTranslation 

和视图矩阵:

//视图矩阵与产地

-PositionTranslation * -OriginTranslation * -Rotation * Zoom * OriginTranslation 

例没有原点的转换,顺序:缩放*旋转*平移ñ

enter image description here