堆栈画布位于顶部,但底部画布上的更改显示通过

时间:2011-06-26 03:33:41

标签: android android-canvas

我想弄清楚如何将两个画布分层,其中一个有位图,第二个是我实际绘制的。

基本上我所拥有的是:

    Bitmap newBitmap = Bitmap.createBitmap(img.getWidth(), img.getHeight(),
            Bitmap.Config.RGB_565);
    Canvas newCanvas = new Canvas();
    newCanvas.setBitmap(newBitmap);
    if (img != null) {
        newCanvas.drawBitmap(img, 0, 0, null);
    }
    mBitmap = newBitmap;
    imageCanvas = newCanvas;

    mCanvas = new Canvas();
    drawBitmap = Bitmap.createBitmap(img.getWidth(), img.getHeight(),
            Bitmap.Config.RGB_565);
    mCanvas.setBitmap(drawBitmap);

其中mCanvas是用户将绘制的内容,imageCanvas是绘制位图的位置。

图像是黑白的,我希望黑线始终显示,所以我希望它作为堆栈的顶部。

我似乎需要确保图像的白色部分需要透明,我在加载图像时可能需要这样做,因为期望这样做太多了。

那么,我如何在同一个视图中堆叠这两个画布,并在底部画布上显示drawLine

我确实看过这个问题,但我认为它不相似:

layered images plus canvas

1 个答案:

答案 0 :(得分:0)

解决方案比我预期的简单。

我有一个菜单选项,允许用户绘制透明图像,这样只有图像的黑线可见,图像的其余部分是透明的。

通过这样做,然后我可以绘制用户正在绘制的位图,首先,然后使用大多数透明颜色绘制图像。

这使黑线始终可见。

我可能需要使用PorterDuff xfer模式才能让它看起来更好,但这符合我的初始要求。

我很惊讶将可绘制的图像放在背景上并不起作用。

我在自定义视图中执行所有操作。