2013-05-17 178 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