Android wie man die Leinwand dreht

Ich schaffe ein Rechteck in einer bestimmten Größe, und jetzt möchte ich es auf 45 Grad drehen, ich habe canvas.rotate, Matrix, aber nicht funktioniert. Wie ist der richtige Weg, um Leinwand in Android zu drehen? Und ich bin Kuriositäten über Path.Direction.CW, ist es für die Rotation verwendet? Aber ich sehe keine Rotationsfunktion im Pfad ()

paint.setAntiAlias(true); paint.setStrokeWidth(2); paint.setColor(Color.BLUE); paint.setAlpha(75); Path path = new Path(); path.addRect(166, 748, 314, 890, Path.Direction.CW); canvas.rotate(45); canvas.drawPath(path, paint); 

  • Ist kundenspezifische enum Serializable auch?
  • Android Studio ERROR: Das Symbol 'View' kann nicht aufgelöst werden
  • Öffnen Sie Google Maps durch Absicht für bestimmte Lage in Android
  • Fehler beim Auflösen: com.android.support:appcompat-v7 24.0.1
  • Klasse Besetzung Ausnahme in Android string.xml
  • Bestimmen Sie, welche Ansicht gerade berührt wird, während der Benutzer den Finger bewegt
  • TabWidget weiße Vordergrundfarbe?
  • Machen Sie Ctrl + F11 starten Android-Projekt, auch wenn auf XML-Datei
  • Wie kann ich die Android-Bibliotheken v4 und v13 im selben Projekt verwenden?
  • Welches Produkt-Geschmack wird Android Studio standardmäßig in build.gradle erstellt?
  • Wie man EditText nicht fokussiert beim Erstellen von Aktivitäten macht
  • Versuchen, ein bereits geschlossenes Objekt erneut zu öffnen: SQLiteDatabase
  • 3 Solutions collect form web for “Android wie man die Leinwand dreht”

    Um ein gedrehtes Rechteck zu zeichnen, musst du die Leinwand vor dem Zeichnen drehen (dann drehe es wieder nach rechts, wenn du etwas anderes zeichnst). Canvas.rotate() ändert gerade die Leinwand-Transformationsmatrix, die nach dem Aufruf Canvas.rotate() Formen verwandelt.

     canvas.save(); canvas.rotate(45); canvas.drawRect(166, 748, 314, 890, paint); canvas.restore(); 

    Pfad.Direktion hat nichts mit Rotationstransformationen zu tun. Aus den docs :

    Gibt an, wie geschlossene Formen (zB Rects, Ovale) orientiert sind, wenn sie zu einem Pfad hinzugefügt werden.

    Wenn du etwas von (x,y) Punkt zeichnen willst, musst du die Leinwand um (x,y) Punkt drehen. Um dies zu tun, sollten Sie verwenden

     canvas.rotate(45,x,y); 

    damit,

     canvas.save(); canvas.rotate(45,x,y); //all drawing from (x,y) point canvas.restore(); 

    Richtiger Weg sollte so etwas sein:

     Path path = new Path(); path.addRect(166, 748, 314, 890, Path.Direction.CW); canvas.save(); // first save the state of the canvas canvas.rotate(45); // rotate it canvas.drawPath(path, paint); // draw on it canvas.restore(); // restore previous state (rotate it back) 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.