Android:在Canvas上定位2位图

时间:2013-02-25 09:56:21

标签: android bitmap android-canvas dimension

我拍照并获得一个位图(位图),当我拍摄图片时,我想留在顶部的图像(bitmao2)。因此,为了保存带有图像的图片,我使用了画布。我想把bitmap2放在位图上,确切地说当我拍照时它是如何定位的。 这是我做的事情

    Bitmap bitmap = BitmapFactory.decodeByteArray(data,0,data.length);
    int width=bitmap.getWidth();
    int height=bitmap.getHeight();
    Bitmap bitmap2 = GameActivity.decodeSampledBitmapFromResource(gameactivity.getResources(), R.drawable.fire16,width1 );
    Matrix matrix = new Matrix();
    matrix.postRotate(90);
    bitmap=Bitmap.createBitmap(bitmap,0,0,width,height,matrix,true);  

    ImageView image = (ImageView) gameactivity.findViewById(R.id.imageView4);
    LayoutParams layout = (LayoutParams) image.getLayoutParams();
    int margin = layout.topMargin;
    Bitmap cs = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_4444); 
    Canvas canvas = new Canvas(cs);
    canvas.drawBitmap(bitmap, 0f, 0f, null);
    canvas.drawBitmap(bitmap2,0,margin, null);

(我旋转图像,因为它处于横向模式,即使我以纵向模式拍摄,所以我更正了)

问题是即使尺寸Canvas =位图的尺寸,我的代码执行后我看不到整个图像,它有点裁剪,当然bitmap2不是应该的位置。 也许我应该采取屏幕的尺寸??

1 个答案:

答案 0 :(得分:1)

您可以使用drawBitmap(位图位图,Rect src,Rect dst,Paint paint)绘制位图:

Rect src = new Rect(0, 0, bitmap2.getWidth(), bitmap2.getHeight());
Rect dst = new Rect(0, 0, width, height);
canvas.drawBitmap(bitmap2, src, dst, null);

此外,如果您旋转图像而不是宽度和高度将在此交换:

bitmap=Bitmap.createBitmap(bitmap,0,0,width,height,matrix,true);