gpt4 book ai didi

cocoa - 在 NSButton 中绘制 NSString 时的绘制工件

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

我使用drawRect在自定义 View 中绘制一个NSString,该 View 是NSButton的 subview 。 NSButton 的 drawRect 也在绘制一个 NSImage,这似乎是问题所在。如果我删除 NSImagedrawRect 代码,它就不会再发生(但这样我就没有背景了)。

这是自定义 View drawRect(缩短):

override func drawRect(dirtyRect: NSRect) {
super.drawRect(dirtyRect)

let string: NSString = NSString(string: thermostat.displayTargetTemperature())
string.drawAtPoint(NSMakePoint(CGFloat(width), CGFloat(y)), withAttributes: self.attributes)

}

这是NSButton drawRect:

override func drawRect(dirtyRect: NSRect) {
var image = NSImage(named: FILDarkManager.enabled ? "preferences-statusbar-bg-dark" : "preferences-statusbar-bg-light")

if (self.state == NSOnState) {
image?.drawInRect(dirtyRect, fromRect: NSZeroRect, operation: NSCompositingOperation.CompositeSourceOver, fraction: 1.0, respectFlipped: true, hints: nil)
}
else {
image?.drawInRect(dirtyRect, fromRect: NSZeroRect, operation: NSCompositingOperation.CompositeSourceOver, fraction: 0.8, respectFlipped: true, hints: nil)
}

super.drawRect(dirtyRect)
}

也许和绘制NSImage时的操作有关?

奇怪的是,如果我将鼠标悬停在 View 上,它就会正确绘制。

Screenshot

最佳答案

尝试将图像绘制到[自身边界]而不是dirtyRect中。

绘制字符串可能会弄脏按钮的一部分,导致您的代码将图像绘制到该 dirtyRect 中。

关于cocoa - 在 NSButton 中绘制 NSString 时的绘制工件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28279054/

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