2

非常にシンプルなタイルエンジンを作ろうとしています。ただし、を使用するBitmap.getpixel(x,y)と、必ずしも色が正しく一致するとは限りません。、、、、で問題なく動作しているようですが0xFFFFFFFF0xFF000000で問題があり0xFF189600ます。似たような色を複数回変えてみましたが、まだ正しく読めないようです。単純なswitchステートメントと比較しています。これが私のメソッドのコードです0xFF18FF000xFF186600

public void LoadLevel(Canvas canvas, int levelName)
{

        Bitmap level = BitmapFactory.decodeResource(getResources(), levelName);
        Bitmap startTile = BitmapFactory.decodeResource(getResources(), R.drawable.starttile);

        canvas.drawColor(Color.WHITE);

        int drawX = 0;
        int drawY = 0;

        for(int y = 0; y < level.getHeight(); y++)
        {
            for(int x = 0; x < level.getWidth(); x++)
            {
                switch(level.getPixel(x, y))
                {
                    case 0xFF000000: break;

                    case 0xFFFFFFFF: 
                        canvas.drawBitmap(startTile, drawX, drawY, null); 
                        break;

                    case 0xFF189600: 
                        canvas.drawBitmap(startTile, drawX, drawY, null); 
                        break;

                    case 0xFF18FF00: 
                        canvas.drawBitmap(startTile, drawX, drawY, null); 
                        break;

                    case 0xFF186600: 
                        canvas.drawBitmap(startTile, drawX, drawY, null); 
                        break;
                }

                Log.d("Color", Integer.toString(level.getPixel(x, y)));

                drawX += 128;
            }
            drawX = 0;
            drawY += 128;
        }
}

ログによると、色は「-15177472」です。でも実際の色はわかりませんが…だから-15177472 == 0xFF186600

ピクセルを取得しないために私は間違って何をしていますか?アンドロイドは画像を変更していますか?私が使用すると思われる安全な色はありますか?

4

1 に答える 1

0

-15177472です0xFF186900。あなたが探していた9のではなく、数字に注意してください。6

これらの期待値はどこから取得し、ビットマップをどのようにロードしていますか?描画プログラムでビットマップを作成してからAndroidアプリにロードすると、16bppとして解凍されている場合があります。その場合、ピクセル値を32bppに戻すときに精度がいくらか低下しますgetPixel()

于 2011-11-28T11:08:15.927 に答える