2016-05-11 9 views
0

Angenommen, ich habe zwei Bitmaps, die ich auf eine Canvas einer View zeichnen möchte. Der Twist ist, dass ich die erste Bitmap um 30 Grad im Uhrzeigersinn um einen Drehpunkt gedreht zeichnen möchte, und ich möchte die andere Bitmap 45 Grad gegen den Uhrzeigersinn um einen anderen Drehpunkt zeichnen.Android Canvas: Wie zeichne ich mehrere Bitmaps mit ihren eigenen Rotationen und Drehpunkten?

Ich habe folgende Stub beachten:

canvas.save(Canvas.MATRIX_SAVE_FLAG); 
canvas.rotate(30, pivotX, pivotY); 
canvas.drawBitmap(bitmapOne, x1, y1, antiAliasPaint); 
canvas.rotate(-75, otherPivotX, otherPivotY); 
canvas.drawBitmap(bitmapTwo, x2, y2, antiAliasPaint); 
canvas.restore(); 

Edit:

bestätigt, dass es nicht funktioniert. Es führt nur dazu, dass die gleiche Leinwand gedreht wird.

Muss ich 2 Bitmap s erstellen, BitmapOne in einem neuen Objekt Bitmap drehen, BitmapTwo in der anderen drehen und sie wie gewohnt im Zielbereich zeichnen?

Antwort

0

Do it diese Weise:

canvas.save(Canvas.MATRIX_SAVE_FLAG); 
canvas.rotate(30, pivotX, pivotY); 
canvas.drawBitmap(bitmapOne, x1, y1, antiAliasPaint); 
canvas.restore(); 

canvas.save(Canvas.MATRIX_SAVE_FLAG); 
canvas.rotate(-75, otherPivotX, otherPivotY); 
canvas.drawBitmap(bitmapTwo, x2, y2, antiAliasPaint); 
canvas.restore(); 
+0

Es funktioniert. Ich habe nicht untersucht, wie 'canvas.save()' und 'canvas.restore()' funktioniert, also wusste ich das nicht. Vielen Dank. – Gensoukyou1337

Verwandte Themen