refaire ou utiliser les Outlet d'Interface Builder
Greensource
Membre
Bonsoir!
Je souhaiterais refaire quelques choses dans le style des connecteurs que l'ont trouve dans IB (cf: piece jointe).
J'ai besoin de représenter un fil de connexion entre deux port et je me dit que ce qui est fait dans IB ressemble pas mal à ce que je veux.
Vous savez si il y a moyen de récupérer ça? Ou bien faut-il tout refaire?
Je souhaiterais refaire quelques choses dans le style des connecteurs que l'ont trouve dans IB (cf: piece jointe).
J'ai besoin de représenter un fil de connexion entre deux port et je me dit que ce qui est fait dans IB ressemble pas mal à ce que je veux.
Vous savez si il y a moyen de récupérer ça? Ou bien faut-il tout refaire?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Sur un mouseDown tu commences un BezierPath, sur mouseDrag tu fais évoluer ce BezierPath et tu regardes la view qui est sous la souris pour la mettre en surbrillance si besoin, et sur mouseUp tu finalises le lien.
Cette vue est instanciée et placée dans la fenêtre au dessus de l'autre vue (celle qui contient les connecteurs) dés qu'on clique sur un connecteur.
- Dans -mouseDown: on prend le point de départ du clic
- Dans -mouseDragged: on prend les coordonnées du point courant, on redimensionne la vue pour que la ligne tienne dedans et on appelle -[self setNeedsDisplay:YES]
- Dans -drawRect:, on dessine une ligne (NSBezierPath) entre les deux points.
La difficulté provient plus du retour visuel qu'il faut donner aux connecteurs quand une liaison est bonne. Il faut que la vue du dessus transmette les coordonnées du point courant à la vue en dessous.
À noter que si cela se fait entre plusieurs fenêtres de l'appli, le principe est similaire, sauf qu'on dessinera la ligne dans une fenêtre transparente. C'est ce que fait Interface Builder.
C'est dejà un bon point de départ pour moi, je dois pouvoir me débrouiller avec les premiers pas... mais, j'imaginais bien qu'il y aurait une difficulté du genre ci-dessus.
Je vais déjà faire des tests avant de m'attaquer à ce problème.
Merci.