gpt4 book ai didi

macos - 为 OSX 菜单栏动态创建模板图像

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

我在为 OSX 菜单栏创建模板图像时遇到问题。据我所知,它必须是 PDF 图像。为此,我有:

var pageRect: CGRect = CGRectMake(0, 0, CGFloat(10), CGFloat(barHeight))
let pdfData: NSMutableData = CFDataCreateMutable(nil, 0)
let pdfConsumer = CGDataConsumerCreateWithCFData(pdfData as CFMutableDataRef)
let pdfContext = CGPDFContextCreate(pdfConsumer, &pageRect, nil)

然后我绘制到 PDF 中:

CGPDFContextBeginPage(pdfContext, nil)
CGContextSetRGBFillColor (pdfContext, 1, 0, 0, 1)
CGContextFillRect (pdfContext, CGRectMake (0, 0, 200, 100 ))
CGPDFContextEndPage(pdfContext)

然后我尝试创建一个 NSImage:

let image = NSImage(data: pdfData)

并将其添加到状态项的图像属性中:

button.image = image

但是,这不起作用。我尝试将图像保存到磁盘并打开它,但收到图像已损坏的消息,所以我怀疑错误在于将 pdfData 转换为 NSImage,尽管我对此并不完全有信心。无论如何,任何帮助将不胜感激。

最佳答案

模板图像不必必须是 PDF。要使 NSImage 实例成为模板图像,只需将其 template 属性设置为 true。

无论图像的性质如何(位图、PDF,等等),系统仅当它是模板图像时才会使用其 Alpha channel 。颜色 channel 被忽略。

如果文件名减去扩展名以“Template”结尾,系统会自动将从文件加载的图像标记为模板图像。例如,fooTemplate.png 或 barTemplate.pdf。

关于macos - 为 OSX 菜单栏动态创建模板图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38039262/

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