Monotouch - 校正颠倒的图像旋转
问题描述:
我一直在使用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会这样做,并看看我不期望修复它的一些解决方案。
那么如何翻转它?那么幸运的是我可以自己回答这个问题,但我不能保证它是做到这一点的“正确”方式!
答
不要忘记,这只是一个快速修复图像加载颠倒。我认为这些代码尽可能简单,因为它可以在完成任务时获得。
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框架。
感谢您的编辑Max,只是看看如何做C#亮点:) – 2013-03-12 10:07:10