아주 간단한 타일 엔진을 만들려고합니다. 그러나 Bitmap.getpixel(x,y)
을 사용하는 것이 항상 색상을 정확하게 일치시키는 것은 아닙니다. 0xFFFFFFFF
, 0xFF000000
, 0xFF189600
및 0xFF18FF00
으로 문제가있는 것으로 보이지만 0xFF186600
에 문제가 있습니다. 나는 여러 다른 비슷한 색상으로 변경하려고했지만 여전히 정확하게 읽지 않는 것 같습니다. 나는 간단한 switch 문과 비교하고있다. 내 방법에 대한 코드는 다음과 같습니다Bitmap.getpixel이 올바른 색상을 읽지 못합니까?
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
픽셀을 얻지 못하게하려면 어떻게해야합니까? 안드로이드가 이미지를 바꾸고 있습니까? 사용하기에 안전한 색상이 있습니까?
0xff39ff00이 작동하는 것처럼 보이지만 색상이 다른 것과 비슷합니다. 이것은 매우 짜증나게되고 있습니다. – Taylor
ffff00, ff00ff, 0000ff, 심지어 00aeff와 같은 색상은 "안전"한 것 같습니다. 하지만 999900, 666600 등은 아닙니다. 왜 그런지는 잘 모르겠습니다 만, 이것이 어떻게 보이는지입니다. 정말 나쁘다. 와우. – Taylor