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?
Hmm, je comprends. Mais je ne veux pas le remplir avec une couleur, si possible. Effacer la vue signifierait la laisser transparente. – sidyll