【问题标题】:Overlay Bitmap over another Android在另一个 Android 上叠加位图
【发布时间】:2013-01-11 21:55:18
【问题描述】:

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

  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。 提前致谢。

【问题讨论】:

  • 你用什么方法做这个?

标签: android bitmap android-canvas bitmapimage


【解决方案1】:

底线,首先您需要将原始图像添加到画布,然后是边框,然后将画布放在视图上。您最好的选择是在 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);

【讨论】:

  • 我试过你的代码,但它没有工作,反正我自己想通了。感谢您的帮助。:)
  • 最佳做法是发布您的答案,并在可能的情况下在 2 天内接受。只是让你知道;-)
【解决方案2】:

谢谢我自己想出来的。使用这个

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 是原始位图的另一个位图,因为我不希望用户在原始方法上应用叠加,而是在更改后的方法上应用。 希望答案对某人有所帮助。谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-05
    • 2013-03-23
    • 1970-01-01
    • 2011-11-23
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多