2015-01-09 6 views
0

컬러 스플래시 앱을 개발 중입니다. 나는 손가락 페인트를 사용합니다.안드로이드에서 터치하여 엠 보스 비트 맵

이제 비트 맵 터치 이벤트를 엠 보스하고 싶습니다. 나는 여기에 엠 보스를 적용 할 때 붉은 색으로 엠 보스 경로를 그리는 데모를 하나 가지고 있지만 터치시 비트 맵 뒤에 양각 싶습니다.

private Path mPath; 
private MaskFilter mEmboss; 

public void init(){ 
    mPaint = new Paint(); 
    mPaint.setAntiAlias(true); 
    mPaint.setDither(true); 
    mPaint.setColor(color.RED); 
    mPaint.setStyle(Paint.Style.STROKE); 
    mPaint.setStrokeJoin(Paint.Join.ROUND); 
    mPaint.setStrokeCap(Paint.Cap.ROUND); 
    mPaint.setStrokeWidth(20); 
    mEmboss = new EmbossMaskFilter(new float[] { 1, 1, 1 }, 0.4f, 6, 3.5f); 
} 



// on click event 
    switch (item.getItemId()) { 
     case EMBOSS_MENU_ID:       
      mPaint.setMaskFilter(mEmboss); 
    } 



// View Class method 

@Override 
public void onDraw(Canvas canvas) { 
    super.onDraw(canvas);   
    canvas.drawPath(mPath, mPaint); 
    canvas.drawPath(circlePath, circlePaint); 
} 

@Override 
public boolean onTouchEvent(MotionEvent ev) { 
    float x = ev.getX(); 
    float y = ev.getY(); 
    invalidate(); 
    return true; 
} 
나는 결국 해결책을 찾기

답변

2

: 같은 비트 맵

사용 BitmapShader

private Path mPath; 
private MaskFilter mEmboss; 

public void init(){ 
    mPaint = new Paint(); 
    mPaint.setAntiAlias(true); 
    mPaint.setDither(true); 
    mPaint.setColor(color.RED); 
    mPaint.setStyle(Paint.Style.STROKE); 
    mPaint.setStrokeJoin(Paint.Join.ROUND); 
    mPaint.setStrokeCap(Paint.Cap.ROUND); 
    mPaint.setStrokeWidth(20); 
BitmapShader fillBMPshader = new BitmapShader(bm_original, Shader.TileMode.MIRROR, Shader.TileMode.CLAMP); 
mPaint.setShader(fillBMPshader); 
    mEmboss = new EmbossMaskFilter(new float[] { 1, 1, 1 }, 0.4f, 6, 3.5f); 
}  

// onclick event 
    switch (item.getItemId()) { 
     case EMBOSS_MENU_ID:       
      mPaint.setMaskFilter(mEmboss); 
    } 

// View Class method 

@Override 
public void onDraw(Canvas canvas) { 
    super.onDraw(canvas);   
    canvas.drawPath(mPath, mPaint); 
    canvas.drawPath(circlePath, circlePaint); 
} 

@Override 
public boolean onTouchEvent(MotionEvent ev) { 
    float x = ev.getX(); 
    float y = ev.getY(); 
    invalidate(); 
    return true; 
} 
관련 문제