2010-01-09 4 views
0

Cela ne fait rien:simple NSImage dessin ne fonctionne pas comme prévu

NSImage* testImage = [[NSImage alloc] initWithSize:NSMakeSize(2.0,2.0)]; 

[testImage lockFocus]; 
[[NSImage imageNamed:@"testImage"] drawAtPoint:NSMakePoint(1.0,1.0) fromRect:NSZeroRect operation:NSCompositeCopy fraction:1.0]; 
[testImage unlockFocus]; 

[levelView setImage:testImage]; 

... mais cela ne:

[levelView setImage:[NSImage imageNamed:@"testImage"]]; 

Il me semble que si celui-ci produit des résultats visibles, donc si l'ancien. Je suppose que je fais une erreur stupide quelque part?

+0

Mon, c'est embarrassant. La réponse était en effet que je dessinais une image ridiculement petite (4 pixels au total), et il est juste arrivé qu'ils soient tous transparents. Je devais penser à Quartz Composer quand je tapais 1.0s et autres joyeusetés. – andyvn22

Répondre

4

testImage sera 2x2 pixels. Puisque vous dessinez sourceImage à (1,1), 1 pixel en haut et un pixel à droite de l'origine, 3 de vos quatre pixels seront nécessairement toujours clairs. Le pixel en haut à droite sera le même que le pixel en bas à gauche de sourceImage. Si c'est clair, vous n'allez rien voir.

3

Je ne vois pas assez de code ici pour diagnostiquer le problème. Comment invoquez-vous le code dans votre première liste? Est-ce que "levelView" est déjà dans une fenêtre, ou a-t-il été chargé à partir d'une plume à ce moment-là?

Existe-t-il un fichier image nommé "testImage" dans votre projet? Êtes-vous sûr de vouloir que cette image ne soit que de deux pixels carrés? Appelons [NSImage imageNamed: @ "testImage"] sourceImage.

Questions connexes