私はアンドロイド用のピクセルゲームを作っています。 32x32の画像を使用しています。画面の大きさに関係なくゲームを同じように見せるために、画像を動的に拡大します。小さなビットマップピクセルを完全に拡大する
6タイル、もともとは32×32:私の問題は、スケールアップ時に、画像の一部が元の色を保持していないということです。ご覧のように、黒い辺の直前には、望ましくない影のある線(おそらく黒と灰色の色の平均)があります。あなたは、私は、フィルタを使用していない見ることができるように
public abstract class Drawable {
protected int x;
protected int y;
protected Bitmap image;
Drawable(Bitmap image, int x, int y, float scale) {
this.x = x;
this.y = y;
this.image = Bitmap.createScaledBitmap(image, (int)(image.getWidth()*scale), (int)(image.getHeight()*scale), false);
}
abstract void draw(Canvas canvas);
}
:
これは私がスケーリングのために使用するコードです。これにより、エッジ領域がぼやけてしまいます。スケールアップしたときに真に使うべき場所とは対照的に、実際に画像の鮮明さを維持する別のフィルターがありますか?
は編集:私は今、代わりにこの方法を試してみました
:
scaledRect = new RectF(x, y, x+image.getWidth()*scale, y+image.getHeight()*scale);
paint = new Paint();
paint.setAntiAlias(false);
paint.setDither(false);
paint.setFilterBitmap(false);
そしてドローコールで
:なし成功を収めてcanvas.drawBitmap(this.image, null, scaledRect, paint);
...
ビットマップのスケールアップがぼやけて副作用を持つことになります。おそらくベクトルグラフィックがあなたが探しているものです。 https://developer.android.com/guide/topics/graphics/vector-drawable-resources.html –
ベクターグラフィックスを使ってピクセルアートを作ったことは一度もありませんが、私はそれをチェックします。 –