2012-10-19 83 views
1

我一直在掙扎幾個小時。仿射變換從未像我期望的那樣做。iOS:如何旋轉CGImage並將其旋轉到UIImage上?

CGContextSaveGState (ctx); 
float w = self.frame.size.width; 
float h = self.frame.size.height; 
CGContextRotateCTM (ctx, angle); 
CGContextTranslateCTM (ctx, w/2, -h/2); 
CGRect r = CGRectMake (0,0, w, h); 
CGContextDrawImage (ctx, r, image.CGImage); 
CGContextRestoreGState (ctx); 

我有一個名爲圖像的UIImage,我有一個可通過ctx訪問的CGImage。我想從一個角度旋轉UIImage的中心,並將其繪製在CGImage的頂部。

如果我旋轉,然後翻譯,UIImage得到了一個壞的方式streteched。如果我翻譯,然後旋轉,結果相同。

任何線索如何做到這一點?謝謝。

回答

2

此代碼目前正在iOS6中使用。

檢查圖像寬度是否大於其高度,如果是,則順時針旋轉圖像;否則它會按默認行爲加載。

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
UIImage *image = myImage; 

if(image.size.width > image.size.height) { 

    UIImage *image = myImage; 
    image = [UIImage imageWithCGImage:image.CGImage scale:image.scale orientation:UIImageOrientationRight]; 

    [bgImage setImage:image]; 

} else { 

    [bgImage setImage:image]; 

} 

}