1
我一直在尋找這個相當長的一段時間,這沒有任何意義。我有兩個可能的圖像A.png是28x28,而[email protected]是56x56。使用Monotouch(Xamarin)的iOS圖像,旋轉圖像
我加載圖像,並繪製它,它是完美的 - 普通和視網膜屏幕都在相同的空間繪製圖像,視網膜是更好的分辨率。
Image對象具有以下屬性:
Image.Size.Width = 28 or 56 for @2x image.
Image.Width = 28
Image.CurrentScale = 1.0 or 2.0 for @2x image.
一切都很好。
現在,我想旋轉圖像。我通過下面的函數運行它,並且它帶有一個具有與上面完全相同的屬性的圖像 - 在.width和.height中具有28x28的旋轉圖像,以及image.size.width中的28或56。並與currentScale設置。
但是,它會在視網膜屏幕上畫出原始圖像的一半大小!我已經通過評論此方法的調用來證實情況是這樣,並且它會增大2倍。
這段代碼有什麼問題???
public static UIImage RotateImage (UIImage src, float angle)
{
UIImage Ret, Tmp;
float newSide = Math.Max (src.CGImage.Width, src.CGImage.Height);// * src.CurrentScale;
SizeF size = new SizeF (newSide, newSide);
UIGraphics.BeginImageContext (size);
CGContext context = UIGraphics.GetCurrentContext();
context.TranslateCTM (newSide/2, newSide/2);
context.RotateCTM (angle);
src.Draw (new PointF (-src.Size.Width/2, -src.Size.Height/2));
Ret = UIGraphics.GetImageFromCurrentImageContext();
UIGraphics.EndImageContext(); // Restore context
if (src.CurrentScale != 1.0f)
{
Tmp = new UIImage (Ret.CGImage, src.CurrentScale, UIImageOrientation.Up);
Ret.Dispose();
return (Tmp);
}
return Ret;
}