2009-07-23 3 views
0

J'ai un NSView dans un ScrollView et j'essaye d'y dessiner une image. Le problème est que je veux que le coin supérieur gauche de l'image soit verrouillé dans le coin supérieur gauche du cadre, au lieu du coin inférieur gauche, ce que la vue veut que je fasse. Je devrai pouvoir faire un zoom avant et arrière, et tourner.Quelle est la bonne façon de dessiner une image dans le coin supérieur gauche sur un mac?

actuellement, j'ai un kludge d'un système où je calcule combien je dois traduire mon image en fonction de la taille de l'image et de la taille de la fenêtre. Pour ce faire, j'ai dû créer une vue supplémentaire en dehors de la scrollview, afin que je puisse obtenir la taille de la fenêtre, sans compter les décorations. Ensuite, je peux calculer la taille de la vue en fonction de la taille de l'image et de la taille de la fenêtre, et en fonction de cela, je peux déterminer où traduire l'image. Ma seule autre pensée était d'utiliser la méthode isFlipped: mais cela finit par inverser mon image L-R qui est mauvaise.

Y a-t-il un autre moyen de le faire?

Répondre

1

Si vous voulez que 0,0 soit dans le coin supérieur gauche, il faut passer outre -isFlipped pour retourner YES. Cela ne devrait pas affecter les systèmes de coordonnées des sous-vues (je pense!), Mais les images dessinées directement dans la vue inversée apparaîtront à l'envers à moins que vous ne leur appliquiez une transformation.

View Programming Guide for Cocoa: View Geometry

+0

Oui, comme je l'ai dit, cela retourne l'image. La rotation de 180 degrés n'aide pas parce que l'image est inversée. et NSAffineTransform ne semble pas avoir une transformation "flip". –

+1

AH, mettre à l'échelle X par 1 et Y par -1 semble être la façon dont vous faites une transformation par retournement! passionnant! –

Questions connexes