cgcontext Rechteck drehen
Jungs!
Ich brauche, um zu zeichnen, ein Bild zu CGContext.Dies ist der relevante code:
CGContextSaveGState(UIGraphicsGetCurrentContext());
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGRect rect = r;
CGContextRotateCTM(ctx, DEGREES_TO_RADIANS(350));
[image drawInRect:r];
CGContextRestoreGState(UIGraphicsGetCurrentContext());
Eigentlich ist,das Rechteck drehen und die Anzeige auf einem Gebiet, was es ist nicht meine Absicht.Ich möchte nur zu
drehen Sie das Bild und die Anzeige an der gleichen Stelle.
Irgendwelche Ideen ?????
- Möchten Sie vielleicht versuchen, Sie Ihre Frage text in Ihrer Muttersprache und dann mit Google zu Übersetzen, zu konvertieren, es auf Englisch, weil es sehr schwer ist, zu verstehen, was Sie versuchen, hier Fragen.
- Theres auch eine gute Antwort hier - teamtreehouse.com/community/...
- Mögliche Duplikate von Bild drehen mit CGContextDrawImage
- Ich habe das ähnliche problem, ich Frage mich, haben Sie fix für diese Frage jetzt?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Drehung wird über den Kontext der Herkunft, das ist der gleiche Punkt, dass die Rechtecke sind relativ zu. Wenn Sie sich vorstellen, ein Blatt Papier in den hintergrund, können Sie sehen, was Los ist deutlicher:
Die Linie ist die "von unten" (y=0) der Fenster/Ansicht/layer/Rahmen. Natürlich kann man unter dem Boden, wenn Sie wollen, und wenn Sie den Kontext verwandelt sich der richtige Weg, man könnte sogar in der Lage sein, um es zu sehen.
Sowieso, ich gehe davon aus, dass das, was Sie tun möchten, drehen Sie das Rechteck in Platz, relativ zu einem nicht gedrehten Welt, nicht die Welt zu drehen und alles in es.
Nur so drehen sich alles zu drehen, die Welt, so, wie Sie es tun müssen:
Übersetzen der Ursprung zu dem Punkt, wo Sie wollen, um das Rechteck zu zeichnen. (Sie werden wahrscheinlich wollen, um zu übersetzen, um seinen Mittelpunkt, nicht das Rechteck Herkunft.)
Drehen Sie den Kontext.
Zeichnen Sie das Rechteck zentriert auf den Ursprung. In anderen Worten, das Rechteck, den neuen Ursprungs-Punkt sollte sein, negative halbe Breite und negative Hälfte seiner Höhe (D. H.,
(CGPoint){ width /-2.0, height /-2.0 }
)—verwenden Sie nicht den Ursprung hatte es vor, weil Sie bereits gewöhnt, dass die übersetzen Schritt.Wiederherstellen die gstate, so dass zukünftige Zeichnung ist nicht gedreht.
Was für mich gearbeitet wurde, zunächst mit einer rotationsmatrix zu berechnen, die Menge der übersetzung erforderlich ist, um Ihr Bild zentriert. Unten ich nehme an, Sie haben bereits berechnet, centerX und centerY das Zentrum Ihrer Zeichnung Rahmen und 'theta' für Ihren gewünschten Drehwinkel im Bogenmaß.
Arbeitete, einfach fein für mich. Hoffe, es hilft.
verwenden Sie folgenden code, und drehen Sie Ihre Bild
//Umrechnung von Grad in Bogenmaß
schreiben Sie es in der drawRect-Methode