我一直在使用单声道,我遇到的一个问题是将图像加载到CGImage对象中会导致图像垂直翻转。这是我最初使用的代码:
public static CGImage LoadJPEG (string sImagePath, bool bSmoothImage)
{
return CGImage.FromJPEG (
new CGDataProvider (sImagePath), null, bSmoothImage,
CGColorRenderingIntent.Default);
}
有一个PNG版本,您只需使用CGImage.FromPNG,但如果您使用错误的文件类型的错误格式,那么您将获得一个例外。因为我总是知道我的文件类型是什么,所以我没有提供任何捕获/检查以防止该异常。
你会注意到只是使用这段代码会垂直翻转图像,我无法解释为什么mono会这样做并看看我不期待修复它的一些解决方案。
那么如何将其翻转?好吧,幸运的是我可以自己回答,但我不能保证这是“正确”的做法!
答案 0 :(得分: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框架。