Xamarin.ios 单触式-纠正倒置图像旋转

Xamarin.ios 单触式-纠正倒置图像旋转,xamarin.ios,uiimage,cgcontext,image-rotation,cgimage,Xamarin.ios,Uiimage,Cgcontext,Image Rotation,Cgimage,我使用mono已经有一段时间了,我遇到的一个问题是,将图像加载到CGImage对象中会导致图像垂直翻转。这是我最初使用的代码: 公共静态CGImage LoadJPEG(字符串sImagePath,布尔B平滑图像) { 返回CGImage.FromJPEG( 新的CGDataProvider(sImagePath),null,bSmoothImage, CGColorRenderingIntent.Default); } 有一个PNG版本,您只需使用CGImage.FromPNG,但是如果您使

我使用mono已经有一段时间了,我遇到的一个问题是,将图像加载到CGImage对象中会导致图像垂直翻转。这是我最初使用的代码:

公共静态CGImage LoadJPEG(字符串sImagePath,布尔B平滑图像)
{
返回CGImage.FromJPEG(
新的CGDataProvider(sImagePath),null,bSmoothImage,
CGColorRenderingIntent.Default);
}
有一个PNG版本,您只需使用CGImage.FromPNG,但是如果您使用错误的格式和错误的文件类型,那么您将得到一个异常。因为我总是知道我的文件类型是什么,所以我没有设置任何捕获/检查来防止这种异常

你会注意到,只要使用这段代码,图像就会垂直翻转,我无法解释mono为什么会这样做,看看一些我并不期待修复的解决方案


那么,如何将其翻转回去呢?好吧,幸运的是我自己能回答这个问题,但我不能保证这是一个“正确”的方法

请记住,这只是颠倒加载图像的快速修复方法。我认为代码是在完成工作时所能做到的最简单的

publicstaticcgimagerotaimage(cgimageoimage)
{
cgocontext;
UIImage或oRotatedImage;
矩形边界;
//
oImageBounds=新矩形F(0,0,oImage.WITH,oImage.Height);
//
UIGraphics.BeginImageContext(oImageBounds.Size);
oContext=UIGraphics.GetCurrentContext();
//
oContext.DrawImage(oImageBounds,oImage);
oRotatedImage=UIGraphics.GetImageFromCurrentImageContext();
UIGraphics.EndImageContext();
//
返回oRotatedImage.CGImage;
}
我在玩中的代码时偶然发现了这个解决方案,我想,嘿,这是可行的,我不需要它做任何其他事情:所以我希望这对你有帮助


另外,如果有人能解释这一切的原因,那么请,我想知道到底发生了什么。我以前使用2D图形的唯一经验是使用XNA框架。

感谢edit Max,我刚刚了解了如何使用C#highlights:)