[cocoa] NSImageView toont geen plaatje
26 april 2005 - 18:41   
geplaatst door: BraboMac
Ik loop vast op iets wat eigenlijk hel simpel zou moeten zijn.
Ik wil een jpeg van harddisk laden en in het appwindow tonen.
Nou heb ik het boek "Cocoa for Dummies" geheel doorgenomen. Daar wordt een plaatje gebruikt wat al als resource in het project hant. Op http://devolopper.apple.com heb ik nog allerlei voorbeeldjes gedownload. Mijn combinatie van beide codesnippets is echter met geen mogelijkheid werkend te krijgen:


NSImage *image=[[[NSImage alloc] initWithContentsOfFile:@"/Users/jeanpaul/Download/test.jpg"] autorelease];
[imageView setImage:image];
NSLog(@"Image is klaar");
[[imageView cell] setHighlighted:NO];

Ik heb ook nog gespeeld met

image lockFocus];

Ook dat lijkt niet te helpen.
De voorbeeld apps van Apple laten wel de jpeg zien, dus het bestandsformaat is niet beschadigd of zo.

Wat me overigens ook opvalt is dat Apple veel voorbeelden met OpenGL heeft. Wat is daar nou precies het voordeel van?

Big Nerd Ranch blogs for Mac developers (and Nerds)
Er bestaan slechts 10 soorten mensen op deze aarde: Zij die binair kunnen rekenen en zij die dat niet kunnen.
[cocoa] NSImageView toont geen plaatje
26 april 2005 - 21:56    reactie #1
geplaatst door: Kool
Heb je een outlet naar imageView gemaakt in Interface Builder?

OpenGL is een taal voor 3D plaatjes e.d.

Hoe Kool Super Kool werd... zal nu na het opschonen van het forum een raadsel blijven voor wie dit nog niet wist.
[cocoa] NSImageView toont geen plaatje
27 april 2005 - 21:24    reactie #2
geplaatst door: BraboMac
Natuurlijk heb ik dat gedaan!  :biggrin:

[offtopic]
Voor de zekerheid heb ik nogeens ontkoppeld. Ik krijg verder geen foutmeldingen, alleen een uitroepteken in het instance windows van Interface Builder. Ik heb dat inmiddels weer hersteld. Raar dat daar geen foutmelding over komt! Natuurlijk kreeg ik ook weer eens ruzie met File Merge. Die moet ik ook nogeens oefenen. Gelukkig had ik  :apple:-c gedaan! :sneaky2:
[/offtopic]

Ik maak uit jouw antwoord op dat de code volledig is, en zou moeten werken. Klopt dat?

(Bewerkt door BraboMac om 21:27, 27-04-2005)

Big Nerd Ranch blogs for Mac developers (and Nerds)
Er bestaan slechts 10 soorten mensen op deze aarde: Zij die binair kunnen rekenen en zij die dat niet kunnen.
[cocoa] NSImageView toont geen plaatje
27 april 2005 - 23:22    reactie #3
geplaatst door: mennodeij
Ok, ik ben zeker net zo'n beginner met Cocoa als jij, en ik heb even in het boek van Hilegass zitten lezen. Als je een view opnieuw wilt weergeven moet je op het einde van je functie


[self setNeedsDisplay:YES];

Dit moet dan wel een instance method van je NSImageView zijn, zodat de self pointer naar de View wijst.

neerzetten, zodat de View ook daadwerkelijk opnieuw getekend gaat worden. Wellicht lost dit je probleem op?

(Bewerkt door mennodeij om 23:23, 27-04-2005)

Vu-ja-dé: the odd feeling nothing has ever happened before...
[cocoa] NSImageView toont geen plaatje
27 april 2005 - 23:42    reactie #4
geplaatst door: Kool
Meestal is het de meest "obvious" stap die over het hoofd gezien wordt.  :wink:

Je code klopt inderdaad. Net een klein test projectje gedaan hier, werkt prima:

NSImage *image=[[[NSImage alloc] initWithContentsOfFile:@"/Users/jkool/Desktop/test.jpg"] autorelease];
[imageView setImage:image];

Wat mennodeij hierboven net schrijft, is niet helemaal waar volgens mij. SetNeedsDisplay zal ook getriggered moeten worden als setImage in de NSImageView aangeroepen wordt, volgens mij. Misschien heb ik dat mis en werkt het bij mij omdat ik de bovenstaande code in windowControllerDidLoadNib aanroep.

Probeer het eens door waar jij de code gebruikt dit toe te voegen:

[imageView setNeedsDisplay:YES];
Hoe Kool Super Kool werd... zal nu na het opschonen van het forum een raadsel blijven voor wie dit nog niet wist.
[cocoa] NSImageView toont geen plaatje
28 april 2005 - 17:52    reactie #5
geplaatst door: BraboMac
 :blush: ik heb het gevonden.  :blush:
Met de code was niks mis. Met de connectie ook niet. Er zat een fout in de bestandsnaam!  :music:
Ik kwam er achter door weer een nieuw project aan te maken, de code uit dit forum te kopieren, en de directory in de code te veranderen!  :blush:

Heel erg bedankt voor jullie reacties!  :worship:

Big Nerd Ranch blogs for Mac developers (and Nerds)
Er bestaan slechts 10 soorten mensen op deze aarde: Zij die binair kunnen rekenen en zij die dat niet kunnen.
[cocoa] NSImageView toont geen plaatje
29 april 2005 - 23:41    reactie #6
geplaatst door: Kool
 :sigh:
Hoe Kool Super Kool werd... zal nu na het opschonen van het forum een raadsel blijven voor wie dit nog niet wist.