我有一个包含图像的NSSegmentedControl(todayButton)。我正在尝试使用以下内容在图像上绘制一些文本:
NSImage *img = [todayButton imageForSegment:0]
[img lockFocus]
[@"15" drawAtPoint:NSZeroPoint withAttributes:nil]
[img unlockFocus]
[img setTemplate:YES]
图像被设置为模板,不会抛出任何错误,但图像上没有文字。
答案 0 :(得分:0)
我可能完全错了,但我的直觉告诉我你可能正在遇到NSImage缓存问题。系统会缓存图像,除非您更改图像的设置(通常不是您要重复使用的图像的最佳方法),或者只是创建一个新图像而不是从图像中加载图像。
您可能需要从头开始制作新图像,将任何背景(您从按钮片段获得的内容)合成到其中,然后绘制文本。否则系统会缓存其他地方的内容,这有时会导致未定义(或至少是意外)的行为。
答案 1 :(得分:0)
修改图片后尝试调用setImage:forSegment:
。您交回的图像很可能是副本。
作为与问题无关的旁注,setTemplate:
需要BOOL
,而不是C ++ bool
。您应该通过YES
,而不是true
。这表明您可能正在将视图控制器代码编译为ObjC ++。 If so, I really recommend against that.