在另一个Android上覆盖Bitmap

时间:2013-01-28 14:23:24

标签: android bitmap android-canvas bitmapimage

你好我们正在尝试获取一个图像(来自资源的帧)将其覆盖在原始位图上。到目前为止,我无法使我的Bitmap进入框架,因为框架始终为空。原始位图现在显示在框架内。 这是我用来完成此任务的代码。

  Canvas canvas = new Canvas();
    Bitmap border = null;
    Bitmap scaledBorder = null;
    border = BitmapFactory.decodeResource(getResources(), R.drawable.frame1);
    int width = bmp.getWidth();
    int height = bmp.getHeight();
    scaledBorder = Bitmap.createScaledBitmap(border,width,height, false);
    canvas.drawBitmap(scaledBorder, 0, 0, new Paint());
    view.setImageBitmap(scaledBorder);

bmp作为我在Gallery或Camera中的原始位图。我找不到把它们放在一起。只显示帧而不是bmp。 提前谢谢。

2 个答案:

答案 0 :(得分:5)

谢谢男人,我自己想通了。使用这个

void hm1(){
    Bitmap border = BitmapFactory.decodeResource(getResources(), R.drawable.vignette2);
    int width = bmp.getWidth();
    int height = bmp.getHeight();
    change = Bitmap.createScaledBitmap(change, width, height, false);
    Canvas canvas = new Canvas(change);
    Bitmap scaledBorder = Bitmap.createScaledBitmap(border,width,height, false);
    canvas.drawBitmap(scaledBorder, 0, 0,null);
    //canvas.drawBitmap(k, 0, 0, null);
    view.setImageBitmap(change);
    }

通过在任何点击按钮,菜单等上添加此方法,您可以相互绘制两个位图 P.S:Bitmap change是来自原始方法的另一个位图,因为我不希望用户在原始方法上应用Overlay但在更改的方法上应用Overlay。 希望答案有助于某人。感谢

答案 1 :(得分:0)

底线,首先需要将原始图像添加到画布,然后是边框,然后将画布放在视图上。最好的办法是在onDraw()方法中执行此操作。这样的事情应该有效:

@Override
void onDraw (Canvas canvas)
{
    canvas.drawBitmap(bmp,0,0,new Paint())
    Bitmap border = null;
    Bitmap scaledBorder = null;
    border = BitmapFactory.decodeResource(getResources(), R.drawable.frame1);
    int width = bmp.getWidth();
    int height = bmp.getHeight();
    scaledBorder = Bitmap.createScaledBitmap(border,width,height, false);
    canvas.drawBitmap(scaledBorder, 0, 0, new Paint());
}

或者,您可以从视图中调用draw()函数。

canvas.drawBitmap(bmp,0,0,new Paint())
Bitmap border = null;
Bitmap scaledBorder = null;
border = BitmapFactory.decodeResource(getResources(), R.drawable.frame1);
int width = bmp.getWidth();
int height = bmp.getHeight();
scaledBorder = Bitmap.createScaledBitmap(border,width,height, false);
canvas.drawBitmap(scaledBorder, 0, 0, new Paint());
view.draw(canvas);