gpt4 book ai didi

c# - 单点触控 : Doubling Appearance Image size when Hue adjusted on Retina display

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:32:00 24 4
gpt4 key购买 nike

我正在使用此代码设置 NavBar 的背景,该代码在 Retina 和非 Retina 显示器中效果很好。有一个@2x 和正常图像。所以,一切都很好:

UINavigationBar.Appearance.SetBackgroundImage(
GetImage(ImageTheme.menubar), UIBarMetrics.Default);

现在,当我将此 ChangeHue() 变换应用到图像以调整其色调时,在 Retina 显示器上图像大小是原来的两倍。非 Retina 显示器也可以:

    UINavigationBar.Appearance.SetBackgroundImage(
ChangeHue(GetImage(ImageTheme.menubar)), UIBarMetrics.Default);
...

UIImage ChangeHue(UIImage originalImage){
var hueAdjust = new CIHueAdjust() {
Image = CIImage.FromCGImage(originalImage.CGImage),
Angle = hue * (float)Math.PI / 180f // angles to radians
};

var output = hueAdjust.OutputImage;
var context = CIContext.FromOptions(null);
var cgimage = context.CreateCGImage(output, output.Extent);
var i = UIImage.FromImage(cgimage);
return i;
}

这是应用色相后非 Retina 和 Retina 显示器的结果:

Non-Retina

Retina

最佳答案

忽略那些 HACK,并在您的 ChangeHue 方法中编辑此行:

var i = UIImage.FromImage(cgimage);

改为这样做:

float scale = 1f;
if (UIScreen.MainScreen.RespondsToSelector (new MonoTouch.ObjCRuntime.Selector ("scale"))) {
scale = UIScreen.MainScreen.Scale; // will be 2.0 for Retina
}
var i = new UIImage(cgimage, scale, UIImageOrientation.Up);

这应该返回一个 UIImage 对象,该对象具有正确的“比例”信息,可以在 UINavigationBar 中正确显示。

关于c# - 单点触控 : Doubling Appearance Image size when Hue adjusted on Retina display,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11805628/

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