Android:在画布上绘制位图时出现图像分辨率问题

时间:2012-02-07 05:36:49

标签: android bitmap draw android-canvas

如果我使用此代码绘制位图,那么在画布上进行绘制时,它会被描绘出来。

代码1:

photoBitmap = Bitmap.createScaledBitmap(tempBitmap, display.getWidth(), display.getHeight(), true); // original

但是,如果我使用下面的代码来绘制位图,那么Bitmap没有得到stratched但我只得到了Image的左上角的某些部分。

代码2:

photoBitmap = Bitmap.createBitmap(tempBitmap);

现在,上面两个代码都是用于创建/获取位图。并在画布上绘制位图我使用下面的代码:

canvas.drawBitmap (photoBitmap,0,  0, null);// Original Without ImageView

现在,我应该怎么做才能看到完整的图像,它不应该是stratch。

感谢。

1 个答案:

答案 0 :(得分:1)

听起来你要做的就是在两个方向上均匀地拉伸位图,使其适合显示器。试试这个:

        float xscale = (float)display.getWidth() / (float)tempBitmap.getWidth();
        float yscale = (float)display.getHeight() / (float)tempBitmap.getHeight();
        if (xscale > yscale) // make sure both dimensions fit (use the smaller scale)
           xscale = yscale;
        float newx = (float)tempBitmap.getWidth() * xscale;
        float newy = (float)tempBitmap.getHeight() * xscale; // use the same scale for both dimensions
        // if you want it centered on the display (black borders)
        float borderx = ((float)display.getWidth() - newx) / 2.0;
        float bordery = ((float)display.getHeight() - newy) / 2.0;
        photoBitmap = Bitmap.createScaledBitmap(tempBitmap, newx, newy, true);

        // your drawing code will now look like this
        canvas.drawBitmap (photoBitmap, borderx,  bordery, null);