【发布时间】:2014-12-30 18:04:06
【问题描述】:
我有一个资源“cards.png”,其中包含一副纸牌所需的所有卡片。
资源正好是 896x352,每张卡片正好是 64x88。
“卡片”对象是一个简单的对象,有一个花色字符串、一个数值字符串和一个位图。
我使用“Bitmap.createBitmap”从大的原始图像创建子图像。 后来,当我绘制时,该函数似乎没有正确加载图像。有些卡片“偏移”了许多像素,当我尝试从左到右读取图像时,它似乎变得更糟。
我已经尝试了所有方法,发现这里有很多没有答案的类似问题,所以想知道我是不是走错了路?
“/game/res/drawable”文件夹中引用了资源“R.drawable.cards”。
加载卡片位图的代码是:
public GameScreen(Context context){
int x=0, y=0;
Bitmap cards = BitmapFactory.decodeResource(context.getResources(), R.drawable.cards);
for (Card card: deck.getCards()){
if (card.getSuit().equals("C")){
y = 0;
} else if (card.getSuit().equals("D")){
y = 88;
} else if (card.getSuit().equals("H")){
y = 176;
} else if (card.getSuit().equals("S")){
y = 264;
} else {
x=0;
y=0;
}
if (card.getValue().equals("A")){
x = 0;
} else if (card.getValue().equals("10")){
x = 576;
} else if (card.getValue().equals("J")){
x = 640;
} else if (card.getValue().equals("Q")){
x = 704;
} else if (card.getValue().equals("K")){
x = 768;
} else if (card.getValue().equals("Joker")){
// Joker
x = 832;
} else {
x = 64 * (Integer.parseInt(card.getValue())-1);
}
Bitmap bitmap = Bitmap.createBitmap(cards, x, y, CardBitmapWidth, CardBitmapHeight);
card.setBitmap(bitmap);
}
}
要绘制的代码是:
public void draw(Canvas canvas){
int x = 0;
int y = 0;
for (Card card: cards){
canvas.drawBitmap(card.getBitmap(), x, y, null);
x += card.getBitmap().getWidth();
if (x>canvas.getWidth()){
x = 0;
y += card.getBitmap.getHeight();
}
}
}
【问题讨论】:
-
R.drawable.cards 引用的位图在哪里? res/drawable-?
-
是的,在“res/drawable”下。
-
res/drawable 还是 res/drawable-something?
-
不,只有 res/drawable。
-
放在 res/drawable-nodpi 中