Cocoa 在 NSImage 上绘制文本

Fir*_*nze 5 macos cocoa drawing objective-c nsimage

我有一个包含图像的 NSSegmentedControl(todayButton) 。我正在尝试使用以下命令在图像上绘制一些文本:

NSImage *img = [todayButton imageForSegment:0]

[img lockFocus]
[@"15" drawAtPoint:NSZeroPoint withAttributes:nil]
[img unlockFocus]

[img setTemplate:YES]
Run Code Online (Sandbox Code Playgroud)

图像被设置为模板,不会引发任何错误,但图像上不会出现任何文本。

Jos*_*zzi 0

我可能完全错了,但我的直觉告诉我你可能遇到了 NSImage 缓存问题。系统会缓存图像,除非您更改图像的设置(通常不是您想要重用的图像的最佳方法),或者只是创建一个新图像而不是从捆绑包中加载图像。

您可能需要从头开始制作一个新图像,将任何背景(从按钮部分获得的内容)合成到其中,然后绘制文本。否则,系统会缓存从其他地方获取的内容,这有时会导致未定义的(或至少是意外的)行为。