Frage

Dies ist, wie ich Bitmap auf Canvas in meiner Android app ziehen:

canvas.save();
canvas.scale(scale, scale, x, y);
canvas.drawBitmap(bitmap, x, y, null);
canvas.restore();

Doch die Bitmap nicht gleichmäßig skaliert wird, kein Anti-Aliasing durchgeführt wird. Wie kann ich aktivieren Anti-Aliasing?

War es hilfreich?

Lösung

Versuchen Sie diese:

Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setFilterBitmap(true);
paint.setDither(true);

canvas.drawBitmap(bitmap, x, y, paint);

Andere Tipps

Sowohl Paint paint = new Paint(Paint.FILTER_BITMAP_FLAG); oder paint.setFilterBitmap(true); für mich gearbeitet, aber sehr vorsichtig sein, auf meinem Spiel schnitt die FPS von 30FPS nach unten nur 17FPS. Also, wenn es sich um eine unternehmenskritische Zeichnung wie in einem Spiel ist besser Sie das Bild beim Laden skalieren. Welche habe ich auf die folgende Weise:

public Bitmap getImage (int id, int width, int height) {
    Bitmap bmp = BitmapFactory.decodeResource( getResources(), id );
    Bitmap img = Bitmap.createScaledBitmap( bmp, width, height, true );
    bmp.recycle();
    return img;
}

Haben Sie versucht, ein Paint Objekt erstellen, rufen setAntiAlias(true) darauf und Übergabe an die drawBitmap Methode als 4. Parameter? Wenn dies nicht funktioniert denke ich Ihnen den drawBitmap Aufruf verkleinere sollten stattdessen die Leinwand der Skalierung, z.B. Mit der Funktion drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint) .

Verwendung:

canvas.drawBitmap(source, 0, 0, new Paint(Paint.ANTI_ALIAS_FLAG)); 
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top