0

プログラムで、マウスカーソルの近くに、表示する画像のサイズでボーダレスNSWindowを作成しようとしています。しかし、私はいつもずっと大きなウィンドウを手に入れます(各辺は本来あるべきサイズの約3倍です)!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です。両方とも私のソースファイルの上に宣言されています。私はSnowLeopardを実行しているので、厳密に10.6.8を超えるコードは機能しません(すでに何かを試しています)。

よろしくお願いします。

4

1 に答える 1

0

解決しました!はNSImageView *viewInterface Builder で作成されました。サイズ変更に使用したコードに関係なく、取得したサイズはそこに設定されたサイズでした。プログラムで作成することにより、NSImageViewすべてがうまく機能します!

私に考えさせ、解決策を見つけさせてくれたrdelmarに特に感謝します!

于 2012-08-27T00:27:33.793 に答える