如何将位图叠加在另一个位图上

How to overlay a bitmap over another

我已经尝试了此处建议的解决方案 Android: How to overlay-a-bitmap/draw-over a bitmap?。我似乎工作了,但我从中获得了一个稍微迷失方向的图像。

before-overlay

after-overlay

我已将我的编辑图标设置为在 canvas 开始和停止绘图之间切换。当用户停止绘图时,我检索 canvas 位图和 imageView 并在 imageView 上覆盖 canvas 位图。 从截图可以看出,imageView是笔记本图片,canvas位图是我画的向上箭头。 这是我的叠加功能。

private Bitmap overlay(Bitmap bmp1, Bitmap bmp2) {
        Bitmap bmOverlay = Bitmap.createBitmap(bmp1.getWidth(), bmp1.getHeight(), bmp1.getConfig());
        Canvas canvas = new Canvas(bmOverlay);
        canvas.drawBitmap(bmp1, new Matrix(), null);
        canvas.drawBitmap(bmp2, new Matrix(), null);
        return bmOverlay;
    }

我是 android 的新手,希望得到这方面的帮助。 谢谢!

最简单的方法不用深入图形库是使用FrameLayout,使用这种布局你可以放置一个视图在将它们添加到布局时按顺序在另一个之上,例如:

<FrameLayout>
   <ImageView android:id="@+id/imageView1" />
   <ImageView android:id="@+id/imageView2" />
</FrameLayout>

在上面的示例中,imageView2 将与 imageView1 重叠,这是迄今为止将一张图像与另一张图像重叠的最快方法。这种方法允许将 View 的任何后代放置在另一个 View 之上。

我认为你可以使用类似这样的东西来实现你想要的:

Paint paint = new Paint(Paint.FILTER_BITMAP_FLAG);
Canvas result = new Canvas(underlayBitmap);
result.drawBitmap(overlayBitmap, left, top, paint);

您可以在要绘制叠加层的位置提供顶部和左侧。

希望这对您有所帮助。