2009-07-23 7 views
0

Ich habe ein NSView in einer ScrollView und ich versuche, ein Bild darin zu zeichnen. Das Problem ist, dass ich die obere linke Ecke des Bildes an die obere linke Ecke des Rahmens gebunden haben möchte, anstatt an die untere linke Ecke, was die Ansicht von mir verlangt. Ich muss in der Lage sein, zu vergrößern und zu verkleinern und zu drehen.Was ist der richtige Weg, um ein Bild in der oberen linken Ecke auf einem Mac zu zeichnen?

Derzeit habe ich einen Kludn eines Systems, wo ich berechnen, wie viel ich mein Bild basierend auf der Größe des Bildes und der Größe des Fensters übersetzen muss. Um dies zu tun, musste ich eine zusätzliche Ansicht außerhalb der Scrollansicht erstellen, so dass ich die Größe des Fensters ohne Dekorationen erhalten konnte. Dann kann ich die Größe der Ansicht basierend auf der Größe des Bildes und der Größe des Fensters berechnen, und basierend auf THAT kann ich herausfinden, wohin das Bild zu übertragen ist.

Mein einziger anderer Gedanke war, die isFlipped: -Methode zu verwenden, aber das führt dazu, dass ich mein Image L-R umkehre, was schlecht ist.

Gibt es einen anderen Weg, ich sollte das tun?

Antwort

1

Wenn Sie wollen 0,0 in der oberen linken Ecke sein, dann überschreiben -isFlipped, YES zurückzukehren, ist der Weg zu gehen. Es sollte sich nicht auf die Koordinatensysteme von Unteransichten auswirken (denke ich!), Aber Bilder, die direkt in die umgedrehte Ansicht gezeichnet werden, erscheinen auf dem Kopf stehend, es sei denn, Sie wenden eine Transformation auf sie an.

View Programming Guide for Cocoa: View Geometry

+0

Ja, wie gesagt das kippt das Bild. Das Drehen um 180 Grad hilft nicht, weil dann das Bild umgekehrt wird. und NSAffineTransform scheint keine "Flip" -Transformation zu haben. –

+1

AH, skaliere X um 1 und Y um -1 scheint, wie du eine Flip-Transformation machst! aufregend! –