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

  • EditText verdoppeln sich auf drehen
  • Wie drehe ich eine Bitmap in Android über Bilder Center reibungslos ohne oszillatorische Bewegung
  • Android: EXIF-Umdrehung von URI erhalten
  • OnCreate nicht aufgerufen, wenn der Bildschirm dreht - Android
  • Setzen Sie die Bildansicht nach der Orientierungsänderung
  • Android zoomen und die Bildansicht drehen
  • Bildschirmorientierung
  • Deaktivieren und Aktivieren von Orientierungsänderungen in einer Aktivität in Android programmgesteuert
  • 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.