0

これまでの私のコードは次のとおりです(描画矩形内):

// Drawing code here.
NSLog(@"%@", [[NSBundle mainBundle] pathForResource:@"NoiseBGMainView" ofType:@"jpg"]);
NSURL *pathToBGImage = [[NSURL alloc] initWithString:[[NSBundle mainBundle] pathForResource:@"NoiseBGMainView" ofType:@"jpg"]];
NSImage *NoiseBGMainView = [[NSImage alloc] initWithContentsOfURL:pathToBGImage];
[NoiseBGMainView drawInRect:[self bounds] fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1];

そして絵が描けない… 何が悪いのかわからない。

4

3 に答える 3

4

[NSImage imageNamed:@"NoiseBGMainView.jpg"]代わりに使用しないのはなぜですか?それはNSImageあなたにあなたの写真を(それがそれを見つけることがnilできるならば)そしてそれが見つけることができないならばあなたに与えるでしょう。 NSLogその呼び出しの結果が何であるか、そしてそれがログに記録されているかどうかについて報告しに来て(null)ください。

于 2010-02-04T22:01:16.550 に答える
1

NSImageViewをビューにアタッチし、画像リソースをNSImageViewの画像として設定することにより、描画コードを記述せずにNSImageをNSViewに描画できます。(NSImageViewはすべての描画を処理します)。

カスタムNSViewがペン先からロードされる場合は、セットアップコードも必要ありません。InterfaceBuilderで適切なNSView-NSImageView-NSImage(リソース)接続を確立するだけです。

于 2010-02-05T05:29:56.030 に答える
1
NSURL *pathToBGImage = [[NSURL alloc] initWithString:[[NSBundle mainBundle] pathForResource:@"NoiseBGMainView" ofType:@"jpg"]];

これは間違っています。パス名ではなく、http://apple.com/-[NSURL initWithString:]などの文字列バージョンの URL を取ります。

URL を渡さなかったので、URL は相対 URL になりますが、相対 URL にはベースが必要です。URL は有効なオブジェクトですが、どこにもつながりません。これにより、(ベースのない相対 URL から画像をロードしようとしたため) がinitWithContentsOfURL:返されます。nil次に、画像に描画するように指示しようとしますが、画像がないため、何も起こりません。

あなたがしたいinitFileURLWithPath:fileURLWithPath:(または、後で URL を解放する必要がないクラス メソッド)。

于 2010-02-06T02:19:27.733 に答える