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:画像を修正してから呼び出してみてください。差し戻された画像がコピーである可能性は非常に高いです。


質問に関係のない補足として、C++ ではなく を使用しsetTemplate:ます。ではなく、合格する必要があります。これは、View Controller コードを ObjC++ としてコンパイルしている可能性があることを示唆しています。もしそうなら、私は本当にそれをお勧めしません。BOOLboolYEStrue

于 2012-12-14T15:00:00.040 に答える