検索

ホームページ  >  に質問  >  本文

Android 图片涂鸦橡皮擦功能

最近在做一个画板功能,大致的不同颜色画笔、不同粗细已经实现。
参照的是该教程:android-drawing-app

现在要做的功能是,从相册或者相机导入图像,然后在上面涂涂画画,由于橡皮擦的功能其实是一个白色的paint来实现的。因此用了橡皮擦,底层的图像也被画上白色了。想要的效果是橡皮擦只对新画上去的线条有作用,并不影响导入的图像。

网上大致查找资料,好像可以使用两个图层来实现,导入的图像作为最底层,新画的线条在上一层,因此橡皮擦也不会影响到最底层的图像。

导入的图片(bitmap为导入的图片):

 drawCanvas.drawBitmap(bitmap, 0, 0, null);

橡皮擦功能:

public void setErase(boolean isErase) {
        this.isErase = isErase;
        if (isErase) {
            drawPaint.setColor(Color.WHITE);
//            drawPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT));
        } else {
            drawPaint.setColor(tempColor);
            drawPaint.setXfermode(null);
        }

请问如何设置两个图层,并让后续的线条只操作在第二个图层上?这里有点卡住了。或者有类似功能的demo吗?
十分感谢

PHP中文网PHP中文网2771日前963

全員に返信(1)返信します

  • 天蓬老师

    天蓬老师2017-04-17 17:26:19

    レイヤーについて言及したので、画像をレイヤーで描画してみてはいかがでしょうか?
    1. 重複するビューを持つレイヤーを作成し、レイヤー内のタッチ イベントを処理し、画像をエクスポートするときにビットマップ データを結合できます。
    2. 同様に、1 つのビューのみを使用して各レイヤーの画像データを結合することもできます。描画するときはすべてリストに保存され、一番上のレイヤーが最後に描画され、最後に画像をエクスポートするときにデータが結合されます。

    いわゆる画像処理もデータの集合です。階層的に処理したい場合は、各データを別のストレージ ユニットに個別に保存する必要があります。そのため、後のデータ ユニットを変更しても変更が反映されなくなります。以前にこのような描画ボードも作成しましたが、例が見つからないようですが、これがアイデアです。幸運を祈ります

    返事
    0
  • キャンセル返事