Question

J'ai une fenêtre avec une sous-classe de NSView en elle. A l'intérieur de la vue, je mets un NSImage.

Je veux être en mesure de faire pivoter l'image de 90 degrés, en gardant le (nouveau) coin supérieur gauche de l'image dans le coin supérieur gauche de la vue. Bien sûr, je vais devoir faire pivoter l'image, puis le traduire pour remettre l'origine en place.

En carbone, j'ai trouvé CGContextRotateCTM qui fait ce que je veux. Cependant, je ne trouve pas le bon choix dans ObjC. setFrameCenterRotation ne semble pas faire quoi que ce soit, et setFrameRotation, je ne peux pas sembler figurer dehors où l'origine est, donc je ne peux approprately traduire.

Il semble bouger. Quand je redimensionnez la fenêtre, il met l'image (ou une partie de celui-ci, il me semble avoir un problème de découpage étrange que WEL) et quand je défiler, il saute à un autre (et pas toujours la SAEM) emplacement.

Est-ce que ce sens pour tout le monde?

Merci

Était-ce utile?

La solution

je tourne texte à l'écran pour une application que je travaille et que le cacao (je suppose que vous parlez de cacao et non ObjC dans votre question) façon de le faire est d'utiliser NSAffineTransform.

Voici un extrait qui devrait vous commencer

double rotateDeg = 90;
NSAffineTransform *rotate = [[NSAffineTransform alloc] init];
NSGraphicsContext *context = [NSGraphicsContext currentContext];

[context saveGraphicsState];
[rotate rotateByDegrees:rotateDeg];
[rotate concat];

    /* Your drawing code [NSImage drawAtPoint....]for the image goes here 
       Also, if you need to lock focus when drawing, do it here.       */

[rotate release];
[context restoreGraphicsState];

Les mathématiques sur la rotation peut être un peu difficile ici parce que ce que le fait ci-dessus est de faire tourner le système de coordonnées que vous dessinez dans. Ma rotation de 90 degrés est une rotation dans le sens antihoraire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top