Changer l'origine du système de coordonnées
Rocou
Membre
le point {0,0} étant en bas à gauche d'une vue, à chaque fois que l'on agrandit ou rétrécit cette dernière, tout ce qui est dessiné dans cette vue, se met à bouger.
Quelle est la meilleure solution pour éviter cela?
J'ai cru comprendre que l'on pouvait changer le point d'origine grâce à [maVue setBoundsOrigin:newOrigin] mais cela n'a pas l'effet voulu.
Ou alors, faut-il ajouter la valeur du déplacement aux coordonnées des graphes?
Quelle est la meilleure solution pour éviter cela?
J'ai cru comprendre que l'on pouvait changer le point d'origine grâce à [maVue setBoundsOrigin:newOrigin] mais cela n'a pas l'effet voulu.
Ou alors, faut-il ajouter la valeur du déplacement aux coordonnées des graphes?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Ha Ok. Mais faut-il mettre ce code dans un endroit particulier? Je l'ai mis dans awakeFromNib, ça n'a strictement aucun effet.
Maintenant est-ce vraiment là ton problème ? peux-tu en dire plus ?
Mon problème est simple:
Sur une vue je dessine un rectangle (un de mes fameux blocs que j'évoquent dans un autre fil).
Mettons que ce rectangle est positionné à 20 pixels du haut de ma vue.
Si j'agrandis ma fenêtre et que ma vue est réglée sous IB pour s'agrandir aussi, mon rectangle s'éloigne du bord supérieur de ma vue puisque l'origine {0,0} s'en éloigne également.
Si l'origine {0,0} était à gauche, en haut de ma vue, ce phénomène n'existerait pas.
EDIT: ça y est, j'ai compris comment fonctionnait setBoundsOrigin mais ce n'est pas cela que je veux. setBoundsOrigin ne fait que déplacer l'origine mais conserve le repère avec l'origine en bas, à gauche. Arg!!
Si c'est le cas, il suffit d'appeller un "setNeedsDisplay:YES" sur ta vue (ton "calendrier") pour lui demander de se redessiner (ce qui va rappeler drawRect au moment opportun, et redessiner tes rectangles... mais si tu recalcules bien leur position en fonction des dimensions de ton "calendrier" ça devrait donc rouler tout seul)
Ok, merci, c'était bien une solution que j'envisageais mais il me semblait plus simple de changer de système de coordonnées.
Sur Amiga, l'origine était en haut à gauche, ce qui facilitait bien des choses.
suffirait à ton bonheur.
Sache toutefois que cela change la CTM (Current Transform Matrix, voir Cocoa Drawing Guide ou Quartz 2D Programming guide), ce qui amène d'autres problèmes, par exemple, les images ou les textes s'affichant la tête en bas...
Oui, génial, c'est exactement ce qu'il me faut!
Pour le moment, pas de problème de texte la tête à l'envers.