4

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

NSImage *img = [todayButton imageForSegment:0]

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

[img setTemplate:YES]

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

4

2 回答 2

0

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

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

于 2012-12-14T14:19:25.307 回答
0

setImage:forSegment:修改图像后尝试调用。你交回的图像很可能是副本。


作为与问题无关的旁注,setTemplate:需要 a BOOL,而不是 C++ bool。你应该通过YES,不是true。这表明您可能正在将视图控制器代码编译为 ObjC++。如果是这样,我真的建议不要这样做。

于 2012-12-14T15:00:00.040 回答