Pregunta

Tengo una ventana con una subclase de NSView en ella. Dentro de la vista, puse un NSImage.

Quiero ser capaz de girar la imagen 90 grados, manteniendo el (nuevo) esquina superior izquierda de la imagen en la esquina superior izquierda de la vista. Por supuesto, voy a tener que girar la imagen y, a continuación, traducirlo a poner el origen en su lugar.

En carbono, encontré CGContextRotateCTM el que hace lo que yo quiero. Sin embargo, no puedo encontrar la decisión correcta en ObjC. setFrameCenterRotation no parece hacer nada, y en setFrameRotation, me parece que no puede averiguar dónde está el origen es, por lo que se puede traducir approprately.

Se parece moverse. Cuando cambio el tamaño de la ventana que pone la imagen (o parte de ella, me parece que tienen un problema de recorte extraña como wel) y cuando me desplazo, que salta a un (y no siempre el SAEM) ubicación diferente.

¿Esto tiene sentido para alguien?

gracias

¿Fue útil?

Solución

girar el texto en la pantalla de una aplicación que trabajo y el cacao (supongo que te refieres Cacao y no ObjC en su pregunta) forma de hacer esto es utilizar NSAffineTransform.

He aquí un fragmento que servirán para iniciar

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];

Las matemáticas en la rotación puede ser un poco difícil aquí porque lo que el anterior consiste en hacer girar el sistema de coordenadas que se está dibujando en. Mi rotación de 90 grados es una rotación en sentido antihorario.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top