绘图线功能在不应该改变线条的颜色时



这是我拥有的onDraw方法:

protected void onDraw(Canvas canvas) {
    canvas.drawBitmap(bitmap, 0, 0, mBitmapPaint); // Deseneaza Bitmapul mutabil
        if (shapes.size() > 0) {
        for (ShapeFromLines shapesfromline : shapes) {
            if (shapesfromline.size() > 1) {
                LogService.log("", "shapes: " + shapesfromline.size());
                float startx, starty;
                startx = shapesfromline.get(0).stopX;
                starty = shapesfromline.get(0).stopY;
                for (int i = 1; i < shapesfromline.size(); i++) {
                    LogService.log("", "----size color in ondraw: " + shapesfromline.get(i).getPaint().getColor());
                    canvas.drawLine(startx, starty, shapesfromline.get(i).getStopX(), shapesfromline.get(i).stopY, shapesfromline.get(i).getPaint());
                    LogService.log("", "shapes: drawn");
                    startx = shapesfromline.get(i).stopX;
                    starty = shapesfromline.get(i).stopY;
                }
            }
        }
    }
        for (int i = 0; i < bitmaps.size(); i++) {
            if ((bitmaps.get(i).bitmap != null)) {
                canvas.save();
                canvas.rotate(bitmaps.get(i).rectrotateVal, bitmaps.get(i).pX + (bitmaps.get(i).bitmap.getWidth() / 2), bitmaps.get(i).pY + (bitmaps.get(i).bitmap.getHeight() / 2));
                mBitmapPaint.setAlpha(bitmaps.get(i).alpha);
                // canvas.drawRect(bitmaps.get(i).rect, cPaint);
                canvas.drawBitmap(bitmaps.get(i).bitmap, bitmaps.get(i).pX, bitmaps.get(i).pY, mBitmapPaint);
                canvas.restore();
            }
        }
        mBitmapPaint.setAlpha(255);
        canvas.drawPath(mPath, paint);
    }
}

正如你可以的,我有一些形状(每个形状都是从名为ShapesFromLines的点的数组列表创建的。现在,我的形状的第一个点来自 touchDown (ontouchevent),我在其中保存当前位置。然后其他点保存在 Touch Up 上。当您第一次按下屏幕时,它会画一个点,然后第二次,它将连接这 2 个点,然后是 3 个点,依此类推。我在每个点上保存 X,Y 和油漆。如您所见,我在绘制时有一个日志服务,它返回这些点的绘制值。现在我有一个带有颜色选择器的函数,可以更改当前路径的颜色。但这设法改变了我所有直线的颜色。现在我检查了一下,当我想添加图片时,主油漆设置为透明。然后线条是透明的,但点(应该连接)具有正确的颜色。任何想法可能有什么问题?

当我创建对象时,我将油漆作为参考传递,并且在更改它时,它也会更改油漆。我这样做是为了修复它:

Paint linepaint = new Paint();
        linepaint.setColor(paint.getColor());
        linepaint.setAlpha(paint.getAlpha());
        linepaint.setAntiAlias(true);
        linepaint.setDither(true);
        linepaint.setStyle(paint.getStyle());
        linepaint.setStrokeJoin(paint.getStrokeJoin());
        linepaint.setStrokeCap(paint.getStrokeCap());
        linepaint.setStrokeWidth(paint.getStrokeWidth());
pointsForLines.add(new Points(stopX, stopY, linepaint));

油漆是我以前使用的全局油漆

相关内容

最新更新