Frage

Hier ist mein Code so weit (in der Auslosung rect):

// 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];

Und das Bild ist nicht zeichnen ... Ich weiß nicht, was falsch ist.

War es hilfreich?

Lösung

Warum nicht einfach [NSImage imageNamed:@"NoiseBGMainView.jpg"] stattdessen verwenden? Das gibt Ihnen eine NSImage des Bildes (wenn es es finden kann), und nil wenn es nicht. NSLog was die Ergebnisse dieser Anruf, dann kommen und berichten, ob es (null) ist Protokollierung oder nicht.

Andere Tipps

Sie können eine NSImage in eine NSView ziehen, ohne jede Zeichnung Code zu schreiben, indem sie ein NSImageView zu Ihrer Ansicht und Einstellung Ihrer Bildressource als die NSImageView des Bildes. (NSImageView kümmert sich um alle die Zeichnung).

Wenn Sie Ihre eigene NSView von einer Feder belastet ist, Sie brauchen keinen Setup-Code entweder -. Nur die entsprechenden NSView-NSImageView-NSImage (Ressource) Verbindungen mit Interface Builder machen

NSURL *pathToBGImage = [[NSURL alloc] initWithString:[[NSBundle mainBundle] pathForResource:@"NoiseBGMainView" ofType:@"jpg"]];

Das ist falsch. -[NSURL initWithString:] nimmt eine String Version einer URL, wie http://apple.com/ , keinen Pfad.

Da Sie eine URL, wird die URL eine relative URL sein, aber eine relative URL muss eine Basis bestanden haben. Die URL ist ein gültiges Objekt, aber nicht überall führen. Dies wiederum bewirkt initWithContentsOfURL: nil zurückzukehren (weil Sie ein Bild von einer relativen URL ohne Basis zu laden versucht). Sie dann versuchen, das Bild zu sagen zu ziehen, aber Sie kein Bild haben, so passiert nichts.

Sie möchten initFileURLWithPath:. (Oder die Klassenmethode fileURLWithPath:, mit dem Sie später nicht mehr die URL freigeben müssen.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top