2011-02-14 4 views
0
@Override protected void onDraw(Canvas canvas) { 

     if (mBitmap != null) { 

      canvas.drawColor(0xFFAAAAAA); 

      canvas.drawBitmap(background,0,0,mBitmapPaint); 

      if(isRelevant){ 
       canvas.drawBitmap(mBitmapLast, 0,0, mBitmapLastPaint); 
      } 

      canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint); 
       canvas.drawPath(mPath, mPaint); 
     } 
    } 

를 통해 경로를 그리는 동안배경 (이미지) 내가 선 주위에 전환 시도했습니다 상단

canvas.drawColor(0xFFAAAAAA); 
       canvas.drawBitmap(background,0,0,mBitmapPaint); 

canvas.drawColor(0xFFAAAAAA); 두 번째 때 나는 그들을 그릴 때, 내 경로가 표시됩니다 화면. 배경 (비트 맵)을 캔버스 경로 아래에 표시하는 방법이 있습니까? 경로의 페인트에 Xfermode을 설정

답변

2

시도 :

mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OVER)); // or DST_OVER 

PorterDuff.Mode는 설명했다.

+0

나는 xfermodes를 너무 잘 이해하지 못한다고 생각한다 ... 나는 현재 그림과 현재 (xfermode.LIGHTEN을 이미 사용하고있는 밝은 색으로 표시)에 대한 두 개의 페인트 변수를 가지고있다. 나는 그걸 보여 주러 가야합니까? –

+0

nvm 난 그것을 해결했다 .LIGHTEN.SRC_OVER 나는 porterduff가 한 페인트에 배수를 가질 수 있다고 생각한다. –

+0

xfermode는 캔버스에 픽셀을 넣을 때 적용되는 연산이다. 알파 마스크를하고 싶을 때 매우 유용합니다. 이전에 가지고 있던 문제는 clearvas와 같은 clearvas()가 선호하는 색상을 사용하고 drawbitmap을 사용하면 xfermode를 인식하기 시작한다는 것입니다. – xandy

관련 문제