gpt4 book ai didi

objective-c - 如何将内存中的 NSImage 显示为 Retina (@2x)?

转载 作者:行者123 更新时间:2023-12-03 17:30:16 36 4
gpt4 key购买 nike

我在 NSMenuItem 中显示动态加载的图像,如下图所示。

我正在加载图像并调整其大小:

[menuItem setImage:[self processImage: [[NSImage alloc] url]]];
[menu addItem:menuItem];

processImage 函数调整下载的 88x88 像素大小。图像为 24x24 像素。 (如下所示)。这导致它看起来不像视网膜图片。但如果我将其保持在 48x48px,它不会显示得像 24x24 那样小,因此 NSMenuItem 实际上不会调整大小。

但是我需要以与 48x48 相同的视角显示这些图像。让它看起来像@2x。我找不到使用 [NSMenuItem setImage:] 方法来执行此操作的方法,或者不将 NSImage 的内容保存为 48x48 的文件并使文件名以结尾@2x

如果我在 setImage: 方法中使用 48x48 图像,NSMenuItem 的高度就会变大两倍,并且它确实显示 48 点 * 48 点。

有什么想法如何在 NSMenuItem 中实现视网膜图像而不将内存图像保存到文件中吗?

最佳答案

只需对像素数多于该值的图像执行 [image setSize:NSMakeSize(24, 24)] 就足够了。 -setSize: 设置其逻辑大小(以磅为单位)。图像中的表示决定了它有多少像素。如果像素尺寸大于点尺寸,则有更多细节。如果绘图目标也是高分辨率,则可以使用此详细信息。

如果这不起作用,您可以“手动”构建图像,方法是将其初始化为所需的大小,使用可用的细节创建位图图像表示,设置该代表的大小和像素尺寸(单独),然后添加图像的表示。

关于objective-c - 如何将内存中的 NSImage 显示为 Retina (@2x)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24945615/

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