2011-06-08 3 views
1

J'ai créé une vue personnalisée sur un bouton, car j'ai besoin de mettre en surbrillance lorsque la souris est terminée. La classe est très simple, et j'ai déjà implémenté mouseEntered: ainsi que mouseExited:. La vue a été enregistrée pour le suivi dans la méthode init (je ne sais pas si c'est le meilleur endroit).Dessin d'images transparentes

Le problème est de tracer. Je garde un ivar mouseOver, mis à YES à l'entrée de la souris et NO à la sortie de la souris. L'autre ivar est pour l'image, appelée image. La différence entre souris ou pas quand il s'agit de dessiner, c'est la transparence. Voici mon drawRect::

- (void)drawRect:(NSRect)dirtyRect 
{ 
    [image drawAtPoint:NSMakePoint(0.0,0.0) 
       fromRect:dirtyRect 
      operation:NSCompositeCopy 
       fraction:((mouseOver) ? 1.0 : 0.0)]; 
} 

Il fonctionne très bien, mais seulement lorsque la souris est entré dans, apparemment. Je suppose que le problème est que la vue n'est pas effacée avant de dessiner l'autre image. J'ai essayé d'ajouter:

[[NSColor clearColor] set]; 
NSRectFillUsingOperation(dirtyRect, NSCompositeClear); 

Mais sans succès. Comment puis-je réparer cela?

Répondre

0

[NSColor clearColor] est une couleur purement transparente. Vous voulez probablement remplir en utilisant une couleur avec une certaine opacité, comme, par exemple, [NSColor whiteColor].

+0

Hmm, je comprends. Mais je ne veux pas le remplir avec une couleur, si possible. Effacer la vue signifierait la laisser transparente. – sidyll

Questions connexes