2013-03-12 110 views
0

我一直在使用mono,我遇到的一個問題是加載圖像到CGImage對象將最終與圖像垂直翻轉。這是我用原來的代碼:Monotouch - 校正顛倒的圖像旋轉

public static CGImage LoadJPEG (string sImagePath, bool bSmoothImage) 
{ 
    return CGImage.FromJPEG (
     new CGDataProvider (sImagePath), null, bSmoothImage, 
     CGColorRenderingIntent.Default); 
} 

有一個PNG版本到哪裏,你只需使用CGImage.FromPNG代替,但如果你使用了錯誤的格式錯誤的文件類型,那麼你會得到一個異常。由於我總是知道我的文件類型是什麼,我沒有設置任何捕獲/檢查來防止這種異常。

你會注意到使用這段代碼會垂直翻轉圖片,我無法解釋爲什麼mono會這樣做,並看看我不期望修復它的一些解決方案。

那麼如何翻轉它?那麼幸運的是我可以自己回答這個問題,但我不能保證它是做到這一點的「正確」方式!

回答

0

不要忘記,這只是一個快速修復圖像加載顛倒。我認爲這些代碼儘可能簡單,因爲它可以在完成任務時獲得。

public static CGImage RotateImage (CGImage oImage) 
{ 
    CGContext oContext; 
    UIImage oRotatedImage; 
    RectangleF oImageBounds; 
    // 
    oImageBounds = new RectangleF (0, 0, oImage.Width, oImage.Height); 
    // 
    UIGraphics.BeginImageContext (oImageBounds.Size); 
    oContext = UIGraphics.GetCurrentContext(); 
    // 
    oContext.DrawImage (oImageBounds, oImage); 
    oRotatedImage = UIGraphics.GetImageFromCurrentImageContext(); 
    UIGraphics.EndImageContext(); 
    // 
    return oRotatedImage.CGImage; 
} 

我偶然發現了這個解決方案,同時與代碼this question和思想打轉轉,嘿,這工作,我並不需要它做任何事:D所以我希望這可以幫助你!

此外,如果任何人都可以解釋所有這些原因,那麼請,我有興趣知道實際發生了什麼。我以前使用2D圖形的唯一經驗是使用XNA框架。

+0

感謝您的編輯Max,只是看看如何做C#亮點:) – 2013-03-12 10:07:10