Frage

Ich bin mit dem folgenden Code ein NSImageView drehen (tatsächlich gestapelt drei übereinander) die Rotation funktioniert gut, aber das Bild skaliert oben und nach unten, wenn sie sich dreht. Warum? und wie kann ich das Problem beheben?

- (void)UpdateRotate:(CGPoint)mouseLoc{

mouseLoc.y = mouseLoc.y - 200;

CGPoint playerMid = CGPointMake(prect.xPos, prect.yPos);

x = mouseLoc.x - playerMid.x;
y = mouseLoc.y - playerMid.y;
double priorResult = rot;
rot = atan2(y,x) * 180 / PI;

[image rotateByAngle:-priorResult];
[image rotateByAngle:rot];
[image setNeedsDisplay:YES];
[WeaponImage rotateByAngle:-priorResult];
[WeaponImage rotateByAngle:rot];
[WeaponImage setNeedsDisplay:YES];
[ShieldImage rotateByAngle:-priorResult];
[ShieldImage rotateByAngle:rot];
[ShieldImage setNeedsDisplay:YES];
}

Gelöst!

anstatt jede NSImageView rotierenden i gedreht einfach die ganze NSView alle die ImageViews enthält = D

Code:

[self setFrameCenterRotation:-priorResult];
[self setFrameCenterRotation:rot];
[self setNeedsDisplay:YES];
War es hilfreich?

Lösung

Vielleicht nennen - (void) setImageScaling: (NSImageScaling) newScaling; mit NSImageScaleNone Skalierung auszuschalten?

Andere Tipps

Verwendung:

[anImageView setFrameCenterRotation:angleInDegrees];
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top