2013-01-24 40 views
2

我想擦擦Image.Actually我有兩個圖像一個在前景和另一個在背景當我擦地形圖像然後背景圖像將不得不如何來做?我在這裏發現了很多,但不能得到解決方案呢。有人請幫我解決我的問題。 我嘗試這樣做:如何擦圖像?

public class MainActivity extends Activity { 

ImageView img; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    // setContentView(R.layout.activity_main); 
    // img = (ImageView) findViewById(R.id.img); 
    // 
    // new Panel(this); 
    setContentView(new Panel(this)); 

} 

class Panel extends View { 

    private Bitmap mBitmap; 
    private Canvas mCanvas; 
    private Path mPath; 
    private Paint mPaint; 
    Bitmap bitmap; 
    Canvas pcanvas; 
    int x = 0; 
    int y = 0; 
    int r = 0; 

    public Panel(Context context) { 
     super(context); 

     Log.v("Panel", ">>>>>>"); 

     setFocusable(true); 
     setBackgroundColor(Color.MAGENTA); 

     // setting paint 
     mPaint = new Paint(); 
     mPaint.setAlpha(1); 
     mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN)); 
     mPaint.setAntiAlias(true); 

     // getting image from resources 
     Resources r = this.getContext().getResources(); 

     Bitmap bm = BitmapFactory.decodeResource(getResources(), 
       R.drawable.verse); 

     // converting image bitmap into mutable bitmap 

     // bitmap = Bitmap.createBitmap(295, 260, Config.ARGB_8888); 
     bitmap = Bitmap.createBitmap(185, 120, Config.ARGB_8888); 
     pcanvas = new Canvas(); 
     pcanvas.setBitmap(bitmap); // drawXY will result on that Bitmap 
     pcanvas.drawBitmap(bm, 0, 0, null); 

    } 

    @Override 
    protected void onDraw(Canvas canvas) { 

     // draw a circle that is erasing bitmap 
     // pcanvas.drawCircle(x, y, r, mPaint); 
     pcanvas.drawColor(color.transparent); 
     canvas.drawBitmap(bitmap, 0, 0, null); 

     super.onDraw(canvas); 

    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 

     // set paramete to draw circle on touch event 
     x = (int) event.getX(); 
     y = (int) event.getY(); 

     r = 20; 
     // Atlast invalidate canvas 
     invalidate(); 
     return true; 
    } 

} 
} 

回答

0

您可能需要使用Xfermodes/Porterduff嘗試,可能這個線程可以幫助你:Android bitmap mask color, remove color

硬集的顏色,你可以使用

int[] pix=new int[bitmap.getWidth()*bitmap.getHeight()]; 
bitmap.getPixels(pix, 0, 0, bitmap.getWidth(), bitmap.getHeight); 

// do some processing here 
// possible set color of some pixels to Color.TRANSPARENT 

bitmap.setPixels(pix, 0, bitmap.getWidth(), 0, 0, bitmap.getWidth(), bitmap.getHeight()); 
+0

你能請告訴我,我應該在哪裏將我的圖像放入您在鏈接中提供給我的代碼中? – Biginner

+0

對不起,現在可能會有效。但是你可以總是把像素設置爲透明 – tilpner