0

これはObjective-c画像の世界への私の最初の進出であり、すぐに困難に直面しました。私が持っているのは、TimeAdderという名前のNSWindowControllerによって制御されるTimeAdder.xibのカスタムNSWindowです。すべてが非常にうまく機能しているので、今は小さな青い長方形を追加しようとしています。

ウィンドウの目的の場所に16x16のサイズのNSImageViewを設定しました。次に、次のコードをwindowDidLoadメソッドに追加しました。

NSSize size;
size.width = 16;
size.height = 16;
image1 = [[NSImage alloc] initWithSize:size];
NSRect   imageBounds = NSMakeRect (0, 0, size.width, size.height);
NSColor* fileSet1Color = [NSColor blueColor];

[image1 lockFocus];
[fileSet1Color set];
NSRectFill (imageBounds);
[image1 unlockFocus];
[pickImage1 setImage:image1];

pickImage1はNSImageViewの名前であり、TimeAdder内のivarです。image1はTimeAdder内のivarであり、NSImageです。size、firstSet1Color、imageBoundsはすべてローカル変数であり、メソッドが完了すると消えます。それが重要かどうかはわかりませんでした。

コードは実行され、いかなる種類の例外も発生しませんが、何もしません。誰かが何が起こっているのかについて何か考えがありますか?

4

1 に答える 1

2
  1. pickImage1実際にNSImageViewであると確信していますか?ペン先に接続しなかった場合、または間違って接続した場合は、nilである可能性があります。その場合、Objective-Cは例外を発生させませんが、代わりに黙って何もしません。

  2. 可能性が低い:NSImageをファイルにダンプして、NSImageに実際に機能すると思われるものが含まれていることを確認します。最も簡単な方法は[[image1 TIFFRepresentation] writeToFile:@"/tmp/image.tiff" atomically:YES]、ターミナルウィンドウでopen /tmp/image.tiffです。

(実際のコードでは使用しないでください-TIFFRepresentation。ただし、このようなデバッグや健全性チェックには問題ありません。)

于 2012-02-20T05:57:28.187 に答える