Android:从位图上切下一部分并缩放它

Android:从位图上切下一部分并缩放它,android,bitmap,textview,android-canvas,Android,Bitmap,Textview,Android Canvas,首先我想说,我确实读了很多书,但我并没有发现这个问题 目前,我的代码运行良好。我有一个位图,然后我剪切了我的位图的一部分并画了这个 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 bitma

首先我想说,我确实读了很多书,但我并没有发现这个问题

目前,我的代码运行良好。我有一个位图,然后我剪切了我的位图的一部分并画了这个

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;
}
到目前为止它是有效的。。但是如何调整此图像的大小?
我的意思是在画布上我画了位图的正确部分,但我想缩放这部分,因为它太小了。。。可能是实际的lh*1,5和实际的lw*1,5或什么的。

我想你可以用这个:

Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
resizedBitmap = Bitmap.createBitmap(originalBitmap, 0, 0, originalBitmap.getWidth(),
                originalBitmap.getHeight(), matrix, false);
得到调整大小的位图后,可以在画布上绘制它

编辑

请试试这个。。我没有试过。。你应该按照我在评论中给你写的那样玩这些值。。此外,您还应阅读以下内容和文档,以了解您在那里的工作:

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;
}

我想你可以用这个:

Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
resizedBitmap = Bitmap.createBitmap(originalBitmap, 0, 0, originalBitmap.getWidth(),
                originalBitmap.getHeight(), matrix, false);
得到调整大小的位图后,可以在画布上绘制它

编辑

请试试这个。。我没有试过。。你应该按照我在评论中给你写的那样玩这些值。。此外,您还应阅读以下内容和文档,以了解您在那里的工作:

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;
}

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

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

是的。。我看到了这样的东西。。但是我真的不知道应该调整什么大小,因为我同时剪切和绘制,我也不知道应该设置什么大小,因为我的画布是用结果创建的。我从你的问题中了解到,你想将位图调整为特定的大小。。对吗?如果是正确的,则只需使用scaleWidth和scaleHeight玩一点,直到您得到想要的。。如果我没有做到这一点,请更具体地说明您想要什么….:你能不能把你的例子改编成我的代码,因为我看到了你以前写过的东西,但我不知道如何在我的代码中使用它。。在这种情况下,我卡住了一点嗯。。现在的问题是,如果我写matrix.postScale0.5f,0.5f,它只显示图片的1/4。。左上角。。如果我把结果的大小编辑成2*cardW,2*cardH,图片就不再缩放了,我可以把它缩小。。通过使用matrix.postScale2,2,但是如果我把它变大,它就不合适了,就像我说的。。我看到了这样的东西。。但是我真的不知道应该调整什么大小,因为我同时剪切和绘制,我也不知道应该设置什么大小,因为我的画布是用结果创建的。我从你的问题中了解到,你想将位图调整为特定的大小。。对吗?如果是正确的,则只需使用scaleWidth和scaleHeight玩一点,直到您得到想要的。。如果我没有做到这一点,请更具体地说明您想要什么….:你能不能把你的例子改编成我的代码,因为我看到了你以前写过的东西,但我不知道如何在我的代码中使用它。。在这种情况下,我卡住了一点嗯。。现在的问题是,如果我写matrix.postScale0.5f,0.5f,它只显示图片的1/4。。左上角。。如果我把结果的大小编辑成2*cardW,2*cardH,图片就不再缩放了,我可以把它缩小。。通过使用matrix.postScale2,2,但是如果我把它变大,它就不适合了,就像我说的