마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

그림판 선 그린후 문제

0 추천

BlurMaskFilter blur = new BlurMaskFilter( 20, BlurMaskFilter.Blur.OUTER);
  
  mPaint = new Paint();
  mPaint.setAntiAlias(true);
  mPaint.setDither(true); // 디더링 효과, 없으면 빠르지만 정확도 낮아짐
  mPaint.setStrokeWidth(curWidth);
  mPaint.setStyle(Paint.Style.STROKE);
  mPaint.setStrokeJoin(Paint.Join.BEVEL); 
  mPaint.setStrokeCap(Paint.Cap.ROUND);  
  mPaint.setMaskFilter(blur); //효과주기 
  mPaint.setShader(new LinearGradient(0,1000,0,1000,
  curColor,curColor2,TileMode.REPEAT));





위와 같이 선에 효과를 주고 초록선으로 칠하면 그 주위에 번짐효과처럼 나오게 효과를 줬는데


다른 선을 그리기 시작하면 겉에 번짐효과는 남아잇는데 선은 없어지네요 ㅠㅠ




private void touch_start(float x, float y) {
   mPath.reset();//문제인 부분 !!!이곳을 지우면 선과 번짐효과가 남는데
                   색상 변경시 전에 칠한것도 바뀌고
                   전에 그린 선도 새로운선 그릴때마다 다시 칠해져서 색이
                   진해지네요.....
   switch (curMode) {
   case PENMODE:
    mPath.moveTo(x, y);
    mX = x;
    mY = y;
    break;

   case RECTMODE:
   case CIRCLEMODE:
    break;
   }
  }

  // Dragging...
  private void touch_move(float x, float y) {

   switch (curMode) {
   case PENMODE:
    mPath.lineTo(x, y);
    mPath.quadTo(mX, mY, (x + mX) / 2, (y + mY) / 2);
    mX = x;
    mY = y;

   case RECTMODE:
   case CIRCLEMODE:
    break;
   }
  }

  // Drag Finish
  private void touch_up(float x, float y) {

   switch (curMode) {
   case PENMODE:
    mPath.lineTo(mX, mY);
    break;

   case RECTMODE:
    mPath.addRect(startX, startY, stopX, stopY, Direction.CW);
    break;

   case CIRCLEMODE:
    mPath.addCircle(startX, startY, (float) Math.sqrt((Math.pow(
      Math.abs(stopX - startX), 2) + Math.pow(
      Math.abs(stopY - startY), 2))), Direction.CW);
    break;
   }
   mCanvas.drawPath(mPath, mPaint);
  }

 

익명사용자 님이 2015년 6월 28일 질문

1개의 답변

0 추천
같은 path 인스턴스인데 당연한거 아닌지?
익명사용자 님이 2015년 6월 28일 답변
그럼 path2를 만들어서 나누면 될까요?
path2를 써서 선은 남게 하긴 햇는데
역시 색을 바꾸면 전에 칠한 색까지 바뀌어 버리네요 ㅠ
어떻게 해야할까요?
...