Bouton de taille variable...
Nebuchad34
Membre
Bonsoir,
je cherche à créer un bouton dont les dimensions (dessin et texte) soit proportionnelles à la taille de la fenêtre.
Je sais déjà faire ce genre de chose pour la taille du texte et pour la taille du bouton, suffit de modifier le "frame" et la FontSize du bouton dans le draw rect de la fenêtre en fonction de la taille de celle-ci.
Ce que je voudrais, c'est pouvoir redessiner l'image et l'alternate image avec NSBezierPath et NSgradient, et là je ne sais vraiment pas comment faire...
je cherche à créer un bouton dont les dimensions (dessin et texte) soit proportionnelles à la taille de la fenêtre.
Je sais déjà faire ce genre de chose pour la taille du texte et pour la taille du bouton, suffit de modifier le "frame" et la FontSize du bouton dans le draw rect de la fenêtre en fonction de la taille de celle-ci.
Ce que je voudrais, c'est pouvoir redessiner l'image et l'alternate image avec NSBezierPath et NSgradient, et là je ne sais vraiment pas comment faire...
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Les boutons utilisent des NSImage. Crée une NSImage et ajoute-lui une représentation. Je vois deux possibilités:
- utiliser un représentation bitmap (NSBitmapImageRep)
C'est la méthode la plus simple pour le dessin, mais la moins bonne au niveau qualité. Dans ce cas, dessine l'image à la taille maximale qu'elle puisse avoir pour que l'interpolation se fasse uniquement à la réduction.
- utiliser une représentation vectorielle
Avec la méthode -[NSView dataWithPDFInsideRect:], tu peux obtenir une NSPDFImageRep (avec sa méthode +imageRepWithData:].
À vrai dire, je n'ai jamais essayé ni l'un, ni l'autre, en général, c'est inutile puisque tu dessines l'image dans un logiciel de dessin vectoriel et tu enregistres en PDF.
Je vais y jeter un oeil et je reviendrais donner mes résultats.
Merci pour l'info.
A partir de là , on fait ce qu'on veut avec des NSBezierPath et cie dans la frame.
ça dépend si le dessin du bouton change souvent ou pas. Effectivement, si ça change souvent, ta méthode étant moins lourde, elle est plus indiquée.
D'où la nécessité d'avoir des boutons qui se redimmensionnent automatiquement en fonction de la taille de la fenêtre.
L'idée de tout faire dans le drawRect du NSbutton me plait bien fait, c'est assez simple. Je vais regarder de ce coté là ...
Le résultat me convient parfaitement, sauf que j'aimerai juste pouvoir modifier ma couleur de remplissage quand "on est en train de cliquer" sur le bouton, bref générer un remplissage alternatif comme les boutons acceptent uen image alternative.
Mais je ne sais pas comment capter les évènements "bouton clické" et "bouton relaché"
Edit : OK !
- (void)mouseDown:(NSEvent *)event
{
fillColor = [NSColor blueColor];
[self setNeedsDisplay];
[super mouseDown:event];
[self mouseUp:event];
}
- (void)mouseUp:(NSEvent *)event
{
fillColor = [NSColor blackColor];
[self setNeedsDisplay];
}
Je suis tombé la dessus sur Google..
Le setState quant à lui n'est jamais appelé.
http://www.cocoatreeapplications.com/_videos/ajustementFenetre.mov
Le plus gros reste à faire pour cette v3, mais c'est déjà un bon pas en avant..
La grande nébuleuse d'Orion est un peu trop saturée à mon goût.