0

这是我第一次涉足 Objective-c 图像的世界,我立刻遇到了困难。我拥有的是 TimeAdder.xib 中的一个自定义 NSWindow,它由一个名为 TimeAdder 的 NSWindowController 控制。一切都运行良好,现在我尝试添加我的蓝色小矩形。

我在窗口上所需的位置设置了一个大小为 16 x 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 都是局部变量,在方法完成后消失。不确定这是否重要。

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

4

1 回答 1

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

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

(如果你能提供帮助,请不要-TIFFRepresentation在实际代码中使用它,但它可以用于像这样的调试和健全性检查。)

于 2012-02-20T05:57:28.187 回答