【问题标题】:How to have different color brushes using multi touch?如何使用多点触控拥有不同颜色的画笔?
【发布时间】:2022-11-10 06:13:05
【问题描述】:

我正在尝试使屏幕上的每个手指在绘制路径时都有不同的颜色。我正在使用指针来创建路径,并尝试为每个数字的指针 ID 分配不同的颜色,但没有结果。在下面的代码中,我试图让第一根手指变成蓝色,然后当另一根手指开始绘制时,它会变成红色。目前,代码使所有的油漆都变成蓝色,但是当 3 个手指在屏幕上时,它都变成了红色。任何帮助表示感谢谢谢

  @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        if(idColor == 1)
            mFingerPaint.setColor(Color.BLUE);

        if(idColor == 2)
            mFingerPaint.setColor(Color.RED);

        for (Path completedPath : mCompletedPaths) {
            canvas.drawPath(completedPath, mFingerPaint);
        }

        for (Path fingerPath : mFingerPaths) {
            if (fingerPath != null) {
                canvas.drawPath(fingerPath, mFingerPaint);
            }
        }
    }

public boolean onTouchEvent(MotionEvent event) {
        int pointerCount = event.getPointerCount();
        int cappedPointerCount = pointerCount > MAX_FINGERS ? MAX_FINGERS : pointerCount;

        // get pointer index from the event object
        int actionIndex = event.getActionIndex();

        // get masked (not specific to a pointer) action
        int action = event.getActionMasked();

        // get pointer ID
        int id = event.getPointerId(actionIndex);

        idColor = id;


        if ((action == MotionEvent.ACTION_DOWN || action == MotionEvent.ACTION_POINTER_DOWN) && id < MAX_FINGERS)
        {
            mFingerPaths[id] = new Path();
            mFingerPaths[id].moveTo(event.getX(actionIndex), event.getY(actionIndex));
        }
        else if ((action == MotionEvent.ACTION_POINTER_UP || action == MotionEvent.ACTION_UP) && id < MAX_FINGERS)
        {
            mFingerPaths[id].setLastPoint(event.getX(actionIndex), event.getY(actionIndex));
            mCompletedPaths.add(mFingerPaths[id]);
            mFingerPaths[id].computeBounds(mPathBounds, true);
            invalidate((int) mPathBounds.left, (int) mPathBounds.top, (int) mPathBounds.right, (int) mPathBounds.bottom);
            mFingerPaths[id] = null;
        }

        for(int i = 0; i < cappedPointerCount; i++) {
            if(mFingerPaths[i] != null)
            {
                int index = event.findPointerIndex(i);
                mFingerPaths[i].lineTo(event.getX(index), event.getY(index));
                mFingerPaths[i].computeBounds(mPathBounds, true);
                invalidate((int) mPathBounds.left, (int) mPathBounds.top, (int) mPathBounds.right, (int) mPathBounds.bottom);
            }
        }

        return true;
    }
}

【问题讨论】:

    标签: android-studio view colors paint


    【解决方案1】:

    我对你的帖子很感兴趣。 你找到解决问题的方法了吗? 你在 GitHub 上分享过你的作品吗? 如果是这样,你能给我一个链接来看看你的项目吗? 谢谢。

    【讨论】:

    猜你喜欢
    • 2020-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多