Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 更改绘制颜色时,现有笔划也会更改_Android_Colors_Paint - Fatal编程技术网

Android 更改绘制颜色时,现有笔划也会更改

Android 更改绘制颜色时,现有笔划也会更改,android,colors,paint,Android,Colors,Paint,我正在使用下面的代码捕获图形。要更改笔划颜色或宽度,我调用setPaintAttribute()方法。但当我改变颜色时,整个图形都会改变,包括我以前画的线条。我怎样才能改变油漆的颜色,保持以前的图纸不变?我试图创建一个新路径,但是上一个图形消失了 public void setPaintAttributes(float STROKE_WIDTH, int color) { paint=new Paint(); paint.setAntiAlias(true

我正在使用下面的代码捕获图形。要更改笔划颜色或宽度,我调用
setPaintAttribute()
方法。但当我改变颜色时,整个图形都会改变,包括我以前画的线条。我怎样才能改变油漆的颜色,保持以前的图纸不变?我试图创建一个新路径,但是上一个图形消失了

public void setPaintAttributes(float STROKE_WIDTH, int color)
    {
        paint=new Paint();
        paint.setAntiAlias(true);
        paint.setColor(color);
        paint.setStyle(Paint.Style.STROKE);
        paint.setStrokeJoin(Paint.Join.ROUND);
        paint.setStrokeWidth(STROKE_WIDTH);
    }
 public boolean onTouchEvent(MotionEvent event) {
        scrollView.requestDisallowInterceptTouchEvent(true);
        btnSaveSignature.setEnabled(true);
        btnSaveSignature.setBackgroundResource(R.drawable.save);
        float eventX = event.getX();
        float eventY = event.getY();           

        switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            path.moveTo(eventX, eventY);
            lastTouchX = eventX;
            lastTouchY = eventY;
            return true;

        case MotionEvent.ACTION_MOVE:

        case MotionEvent.ACTION_UP:

            resetDirtyRect(eventX, eventY);
            int historySize = event.getHistorySize();
            for (int i = 0; i < historySize; i++) {
                float historicalX = event.getHistoricalX(i);
                float historicalY = event.getHistoricalY(i);
                path.lineTo(historicalX, historicalY);
            }
            path.lineTo(eventX, eventY);
            break;
        }

        invalidate((int) (dirtyRect.left - HALF_STROKE_WIDTH),
                (int) (dirtyRect.top - HALF_STROKE_WIDTH),
                (int) (dirtyRect.right + HALF_STROKE_WIDTH),
                (int) (dirtyRect.bottom + HALF_STROKE_WIDTH));

        lastTouchX = eventX;
        lastTouchY = eventY;

        return true;
    }

    private void resetDirtyRect(float eventX, float eventY) {
        dirtyRect.left = Math.min(lastTouchX, eventX);
        dirtyRect.right = Math.max(lastTouchX, eventX);
        dirtyRect.top = Math.min(lastTouchY, eventY);
        dirtyRect.bottom = Math.max(lastTouchY, eventY);
    }
public void setPaintAttributes(浮动笔划宽度,int-color)
{
油漆=新油漆();
paint.setAntiAlias(真);
油漆。设置颜色(颜色);
绘制.设置样式(绘制.样式.笔划);
绘制.设置行程连接(绘制.连接.圆形);
油漆。设置行程宽度(行程宽度);
}
公共布尔onTouchEvent(运动事件){
scrollView.RequestDisallowWinterCeptTouchEvent(true);
btnsavesignation.setEnabled(true);
btnSaveSignature.setBackgroundResource(R.drawable.save);
float eventX=event.getX();
float eventY=event.getY();
开关(event.getAction()){
case MotionEvent.ACTION\u DOWN:
path.moveTo(eventX,eventY);
lastTouchX=eventX;
lastTouchY=eventY;
返回true;
case MotionEvent.ACTION\u移动:
case MotionEvent.ACTION\u UP:
resetDirtyRect(eventX,eventY);
int historySize=event.getHistorySize();
for(int i=0;i
创建一个包含path和paint对的arraylist,然后将每个路径添加到arraylist,它对我有效

ArrayList<Pair<Path, Paint>> paths = new ArrayList<Pair<Path, Paint>>();
ArrayList路径=新建ArrayList();
使用方法如下:

    mCanvas = new Canvas();
    mPath = new Path();
    Paint newPaint = new Paint(mPaint);
    paths.add(new Pair<Path, Paint>(mPath, newPaint));
mCanvas=newcanvas();
mPath=新路径();
油漆新油漆=新油漆(mPaint);
添加(新对(mPath,newPaint));

大家好,有人找到解决方案了吗。?我正在努力解决这个问题。请帮帮我。这方面有什么更新吗?触摸屏幕时,触摸只识别,没有画点。这是android签名捕获中的一个问题吗?