在窗口上制作一个小蓝色方块的问题

时间:2012-02-20 04:36:12

标签: objective-c nsimage nsimageview

这是我第一次涉足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。 size,firstSet1Color,imageBounds都是局部变量,并在方法完成后消失。不确定这是否重要。

代码执行并且不会导致任何类型的异常但不执行任何操作。那里有人对可能发生的事情有任何想法吗?

1 个答案:

答案 0 :(得分:2)

  1. 您确定pickImage1实际上是NSImageView吗?如果你没有把它挂在笔尖里,或者做错了,那可能是零。在这种情况下,Objective-C不会引发异常,而是默默无效。

  2. 不太可能:通过将NSImage转储到文件中,确保NSImage实际包含您的想法。最简单的方法是[[image1 TIFFRepresentation] writeToFile:@"/tmp/image.tiff" atomically:YES],然后在终端窗口中open /tmp/image.tiff

  3. (如果你能提供帮助,请不要在实际代码中使用-TIFFRepresentation,但是对于这样的调试和健全检查来说这很好。)