2017-05-30 5 views
0

Ich habe viele Zeichenoperationen in meiner benutzerdefinierten Ansicht (Kompass). Ich entschied mich, es zu optimieren, indem ich den ganzen Kompass auf einer Bitmap in der Methode onSizeChanged() zeichnete, anstatt es direkt jedes Mal zu zeichnen, wenn onDraw() Auslöser.Bitmap verliert seine Qualität nach dem Drehen der Leinwand

ist hier ein Teil onDraw() Methode:

canvas.rotate(-heading, x, y); 
canvas.drawBitmap(compassBitmap, 0f, compassBitmapY, compassBitmapPaint); 

Mein Problem ist das, was nach der Drehung passiert. Bitmap verliert seine Qualität. Einstellung ANTI_ALIAS_FLAG hilft überhaupt nicht. Gibt es eine Möglichkeit, mit diesem Problem umzugehen, oder sollte ich auf die "schwerere" Implementierung zurückkommen?

Antwort

0

es ist unmöglich, das Bild zu drehen, ohne seine Qualität zu verlieren, es ist durch die Auflösung begrenzt.

Jede Pixelposition muss neu berechnet werden, wenn das neue Ziel nicht (int, int) Pixel muss so gemischt werden, dass es dem Originalbild am nächsten ist.

enter image description here enter image description here

http://homepages.inf.ed.ac.uk/rbf/HIPR2/rotate.htm

Verwandte Themen