2

大家好,我正在尝试获取图像(来自资源的框架)以将其覆盖在原始位图上。到目前为止,我无法让我的位图进入框架,因为框架总是空的。原始位图现在显示在框架内。这是我用来完成此操作的代码。

  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 作为我来自画廊或相机的原始位图。我找不到把它们放在一起的地方。只有框架会出现,但不会出现 bmp。提前致谢。

4

2 回答 2

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

通过在任何单击按钮、菜单等上添加此方法,您可以在彼此之上绘制两个位图。
PS:Bitmap change是原始位图的另一个位图,因为我不希望用户在原始方法上应用叠加层,而是在更改后的方法上应用。希望答案对某人有所帮助。谢谢

于 2013-01-29T09:17:07.430 回答
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);
于 2013-01-28T14:28:05.973 回答