1

首先我想说,我真的读了很多书,但我没有发现这个问题……

目前我的代码运行良好。我有一个位图,然后我剪下我的位图的一部分并绘制它。

this.card = new ImageView(this); //this is my ImageView
//and my bitmap...
this.bmCards = BitmapFactory.decodeResource(getResources(), R.drawable.cardgame);

//and here I set the bitmap as Image of this ImageView
this.card.setImageBitmap(getCard(Stapel.getCard()));

被调用的方法如下:

private Bitmap getCard(Card c) {

    //some arithmetic to calculate the size...

    Bitmap result = Bitmap.createBitmap(cardW, cardH, Bitmap.Config.ARGB_8888);

    Canvas canvas = new Canvas(result);
    canvas.drawBitmap(bmCards, new Rect(x, y, x + cardW + toleranzW, y + cardH + toleranzH), 
            new Rect(0, 0, cardW, cardH), new Paint());

    return result;
}

到目前为止它有效..但我怎么能调整这个图像的大小?我的意思是在画布上我绘制了位图的右侧部分,但我想稍微缩放这部分,因为它太小了......可能是实际H * 1,5 和实际W * 1,5 或其他东西。

4

2 回答 2

3

我认为你可以使用这个:

Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
resizedBitmap = Bitmap.createBitmap(originalBitmap, 0, 0, originalBitmap.getWidth(),
                originalBitmap.getHeight(), matrix, false);

在你得到调整大小的位图后,你可以在画布上绘制它..

编辑

请试试这个..我没试过..你应该使用我在评论中写给你的值..你还应该阅读createBitmap()postScale()文档以了解你是什么在那里做:)

private Bitmap getCard(Card c) {

    //some arithmetic to calculate the size...

    Bitmap result = Bitmap.createBitmap(cardW, cardH, Bitmap.Config.ARGB_8888);

    Matrix matrix = new Matrix();
    matrix.postScale(20, 20);
    result = Bitmap.createBitmap(result, 0, 0, result.getWidth(),
                    result.getHeight(), matrix, false);

    Canvas canvas = new Canvas(result);
    canvas.drawBitmap(bmCards, new Rect(x, y, x + cardW + toleranzW, y + cardH + toleranzH), 
            new Rect(0, 0, cardW, cardH), new Paint());

    return result;
}
于 2013-01-05T23:32:32.517 回答
2

在绘制之前使用矩阵进行平移和旋转。这通常是最简单的方法。

于 2013-01-05T23:32:33.513 回答