2012-02-20 27 views
0

這是我第一次進入Objective-c圖像的世界,我立即遇到了困難。我擁有的是TimeAdder.xib中的一個自定義NSWindow,它由名爲TimeAdder的NSWindowController控制。一切都很好,現在我嘗試添加我的藍色小矩形。製作窗口上的藍色方塊的問題

我設置了一個大小爲16乘16的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。大小,firstSet1Color,imageBounds都是局部變量,並在方法完成時消失。不知道這是否重要。

該代碼執行並不會導致任何形式的異常,但不會執行任何操作。有人在想什麼可能會發生什麼?

回答

2
  1. 你確定pickImage1實際上是一個NSImageView嗎?如果你沒有把它掛在筆尖上,或者不正確,它可能是零。在這種情況下,Objective-C不會引發異常,而是默默無聞。

  2. 不太可能:確保NSImage實際上包含您認爲它所做的事情,方法是將其轉儲到文件中。最簡單的方法是[[image1 TIFFRepresentation] writeToFile:@"/tmp/image.tiff" atomically:YES],然後在終端窗口中,open /tmp/image.tiff

(請不要使用-TIFFRepresentation在實際的代碼,如果你能幫助它,但它是很好調試和完整性檢查是這樣的。)

+0

應該是因爲我從XIB到TimeAdder把它拖。小時,但我會仔細檢查。如果所有這些都檢查出來,我會做tiff轉儲並看看。謝謝(你的)信息。 – 2012-02-20 07:05:43

+0

pickImage1絕對是一個NSImageView,它看起來被正確地綁定到我認爲它應該顯示在xib中的位置。下一步是做tiff轉儲。我會在明天的某個時間到達那裏。 – 2012-02-21 01:35:30

+0

pickImage1連線不正確。在我修好之前,我不確定它有什麼問題,但我重新做了,問題就消失了。 image1不需要是伊娃。 – 2012-03-11 04:00:10