如何修复 cocoa 应用程序中 NSButton 上的模糊图像?
How to fix blurry images on NSButton in cocoa application?
我有几个 NSButtons,它们的作用类似于播放器控件(播放、暂停等)
当我为它们分配图像时,该图像看起来很模糊。
let playPauseButton: NSButton = {
let btn = NSButton(frame: .zero)
let image = NSImage(named: "pauseIcon")
btn.imageScaling = NSImageScaling.scaleNone
btn.image = image
btn.setAccessibilityLabel("Pause")
btn.isBordered = false
return btn
}()
可以在以下位置查看图像:
https://www.dropbox.com/s/38tvh49ikc2m4x7/Play.pdf?dl=0
这张图片是 .pdf 格式,但我尝试了 .png 的 1x、2x 和 3x,但它看起来仍然很模糊。
我也查了这个问题:
Images in NSButton and NSImageView Blurred
但这对我也没有帮助。
这里有一些可以尝试修复模糊边缘的问题。
- 假设您 运行 在 Mojave and/or 中使用图层支持视图,请确保 NSButton 绘制自己的背景颜色( setDrawsBackground YES )。否则 CoreAnimation CALayer 可能发生的情况是 NSImage 背景 alpha 的混合操作是 substandard/wrong.
- 这不应该应用于 NSImage,但也许值得一试:
- [nsImage setScalesWhenResized:NO];
- 尝试不同的 NSCompositingOperation NSCompositeCopy 与 NSCompositeSourceOver
解决方法非常简单。
打开资产目录。
Select 您所有模糊的资产。
按以下命令打开属性检查器:command + option + 4.
勾选"Preserve vector data"。
在该复选框下,查找 "Scale" 并将其设置为 "Single scale"
请注意,这仅在您的设计器将图标导出为 PDF 文件时有效。另外,如果只是将.png 或.jpg 转为.pdf 是行不通的,实际的矢量图必须导出为.pdf。
我有几个 NSButtons,它们的作用类似于播放器控件(播放、暂停等) 当我为它们分配图像时,该图像看起来很模糊。
let playPauseButton: NSButton = {
let btn = NSButton(frame: .zero)
let image = NSImage(named: "pauseIcon")
btn.imageScaling = NSImageScaling.scaleNone
btn.image = image
btn.setAccessibilityLabel("Pause")
btn.isBordered = false
return btn
}()
可以在以下位置查看图像: https://www.dropbox.com/s/38tvh49ikc2m4x7/Play.pdf?dl=0
这张图片是 .pdf 格式,但我尝试了 .png 的 1x、2x 和 3x,但它看起来仍然很模糊。
我也查了这个问题: Images in NSButton and NSImageView Blurred
但这对我也没有帮助。
这里有一些可以尝试修复模糊边缘的问题。
- 假设您 运行 在 Mojave and/or 中使用图层支持视图,请确保 NSButton 绘制自己的背景颜色( setDrawsBackground YES )。否则 CoreAnimation CALayer 可能发生的情况是 NSImage 背景 alpha 的混合操作是 substandard/wrong.
- 这不应该应用于 NSImage,但也许值得一试:
- [nsImage setScalesWhenResized:NO];
- 尝试不同的 NSCompositingOperation NSCompositeCopy 与 NSCompositeSourceOver
解决方法非常简单。
打开资产目录。
Select 您所有模糊的资产。
按以下命令打开属性检查器:command + option + 4.
勾选"Preserve vector data"。
在该复选框下,查找 "Scale" 并将其设置为 "Single scale"
请注意,这仅在您的设计器将图标导出为 PDF 文件时有效。另外,如果只是将.png 或.jpg 转为.pdf 是行不通的,实际的矢量图必须导出为.pdf。