0

私はAndroidでピクセルベースのゲームを作っています。100x100の領域に収まるようにサイズを変更する必要がある8x8のスプライトがいくつかあります。それが機能するかどうかを確認するためのテストとして、画像をキャンバス全体に塗りつぶそうとしました。ある程度は機能しましたが、8x8のスプライトが12x12のスプライトに変わり、ピクセルが非常に奇妙で歪んで見えるようになりました。これが私がこれまでに持っているものです:

        Bitmap grass = BitmapFactory.decodeResource(getResources(), R.drawable.small);
        Paint configuration = new Paint();
        configuration.setDither(false);
        configuration.setAntiAlias(false);
        Matrix myMatrix = new Matrix();
        myMatrix.postScale(canvas.getWidth() / grass.getWidth(), canvas.getWidth() / grass.getHeight());
        Bitmap resizedBitmap = Bitmap.createBitmap(grass, 0, 0, grass.getWidth(), grass.getHeight(), myMatrix, false);
        canvas.drawBitmap(resizedBitmap, 0, 0, null);
4

1 に答える 1

1

あなたがビットマップで作業しているなら、あなたは単にそれができません。非分数係数でスケールアップすることで歪みを最小限に抑え、各pixedが同じ回数繰り返されるようにします(つまり、画像10x10から20x20は2倍にスケーリングされますが、8x8から12x12は1.5なので、運がありません)。解決策は、すべてのアセットをベクトル形式(つまり、SVG)にして、デバイス密度やその他の仕様に従って実行時にレンダリングするか、さまざまなタイプのデバイス用に個別のアセットを準備することです(アプリケーションのサイズが少し大きくなります)

于 2012-11-12T00:13:12.777 に答える