gpt4 book ai didi

使用 Monotouch (Xamarin) 的 iOS 图像,旋转图像

转载 作者:行者123 更新时间:2023-11-29 12:57:39 25 4
gpt4 key购买 nike

我已经研究了很长时间了,这没有任何意义。我有两个可能的图像 A.png 是 28x28,A@2x.png 是 56x56。

我加载图像并绘制它,它非常完美 - 普通屏幕和视网膜屏幕都在同一空间绘制图像,视网膜的分辨率更高。

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;
}

最佳答案

我想通了,绘图是 28x28,居中。替换绘图代码使图像更好。

context.RotateCTM (angle);
src.Draw( new RectangleF (-src.CGImage.Width / 2, -src.CGImage.Height / 2, newSide, newSide));

Ret = UIGraphics.GetImageFromCurrentImageContext ();

src.Draw 线是被改变的线。

关于使用 Monotouch (Xamarin) 的 iOS 图像,旋转图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20644445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com