2013-10-30 2 views
0

이 인 된 onDraw 방법 내가 가진 :DrawLine 기능, 내 라인의 색상을 변경하는 경우 그것은해야하지

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); 
    } 
} 

당신이 II가 어떤 모양을 가질 수로 (각 모양이 포인트라는 ShapesFromLines의 ArrayList를에서 만든 이제 내 모양의 첫 번째 점은 touchDown (ontouchevent)에서 현재 위치를 저장 한 다음 다른 점을 터치 업하여 저장합니다. 화면을 처음 누르면 점을 그리고 두 번째 점은 그립니다. 시간, 그것은 그 2 포인트를 연결하고, 3 등. 각 포인트에 X, Y 및 페인트를 저장합니다. 당신이 볼 수 있듯이, 그 지점에 대한 페인트 값을 반환하는 그리기 logservice 있습니다. 지금 나는 변경하는 색상 선택기가있는 기능이 있어야합니다. 현재 패스의 색 그러나 이것은 모든 직선의 색깔을 바꾸는 역할을합니다. 이제 그림을 추가 할 때 기본 페인트가 투명하게 설정되었는지 확인했습니다. 그리고 선은 투명하지만 점 (연결되어야 함)은 올바른 색을 갖습니다. 무엇이 잘못 될 수 있겠는가?

답변

0

개체를 만들 때 참조로 페인트를 전달했고 페인트를 변경하면 페인트도 변경됩니다. 나는이 그것을 해결하기 위해 않았다 페인트

전에 사용 된 글로벌 페인트를했다

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)); 

관련 문제