2013-03-12 53 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