我正在尝试以编程方式创建一个靠近鼠标光标的无边框 NSWindow 并使用它应该显示的图像大小。但是我总是得到一个更大的窗口(每边大约是它应该大小的三倍)!我仔细检查了我的 imageObj 的大小是否正确,并且所有 NSSize 和 NSRect 结构都是使用正确的值创建的。注释掉的行也不起作用(但是哪个是正确的?)
我已经搜索过这个网站,但我找不到任何类似的问题......我做错了什么?这是我的代码:
NSString* imageName = [[NSBundle mainBundle] pathForResource:@"os_unknown" ofType:@"icns"];
NSImage* imageObj = [[NSImage alloc] initWithContentsOfFile:imageName];
[view setImage:imageObj];
NSSize s = [imageObj size];
NSPoint p = [NSEvent mouseLocation];
NSRect r = [NSWindow frameRectForContentRect:NSMakeRect(p.x, p.y, s.width, s.height)
styleMask:NSBorderlessWindowMask];
//NSRect r = {p, s};
if (win) [win release];
win = [[NSWindow alloc] initWithContentRect:r
styleMask:NSBorderlessWindowMask
backing:NSBackingStoreBuffered
defer:false];
[win setLevel:kCGUtilityWindowLevel];
[view setBounds:NSMakeRect(0, 0, s.width, s.height)];
[[win contentView] addSubview:view];
[win orderFront:sender];
这里 *win 是一个 NSWindow 而 *view 是一个 NSImageView。两者都在我的源文件之上声明。我正在运行 Snow Leopard,因此任何严格大于 10.6.8 的代码都不起作用(已经尝试过)。
预先感谢您的任何帮助。