android mask setXfermode

public class MymaskActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ImageView imageView=(ImageView)findViewById(R.id.imageView1);
        imageView.setImageBitmap(getRoundedCornerBitmap());
    }
    public Bitmap getRoundedCornerBitmap() {  
    Resources res = getResources();  
    Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.fang);  
    Bitmap dst = BitmapFactory.decodeResource(res, R.drawable.yuan);  
      
        Canvas canvas = new Canvas(bmp);  
        final int color = 0xff424242;  
        final Paint paint = new Paint();  
     
   
        paint.setAntiAlias(true);  
//        canvas.drawARGB(0, 0, 0, 0);  
//        paint.setColor(color);  
//     
       paint.setXfermode(new PorterDuffXfermode(Mode.XOR));  
     
        canvas.drawBitmap(dst, 0, 0, paint) ;
        return bmp;  
    }  
}


 当绘制出现问题时可在绘制前使用saveLayer,Dst 为初始图像画,src second相对于DST第二次绘制的图像 
1.PorterDuff.Mode.CLEAR 所绘制不会提交到画布上。
 2.PorterDuff.Mode.SRC 显示上层绘制图片,只显示SRC 
3.PorterDuff.Mode.DST 显示下层绘制图片,只显示DST 
4.PorterDuff.Mode.SRC_OVER 正常绘制显示,上下层绘制叠盖。
 5.PorterDuff.Mode.DST_OVER 上下层都显示,下层居上显示。 
6.PorterDuff.Mode.SRC_IN 取两层绘制交集,显示上层。
 7.PorterDuff.Mode.DST_IN 取两层绘制交集,显示下层。
 8.PorterDuff.Mode.SRC_OUT 取上层绘制非交集部分。
 9.PorterDuff.Mode.DST_OUT 取下层绘制非交集部分。
 10.PorterDuff.Mode.SRC_ATOP 取下层非交集部分与上层交集部分 
11.PorterDuff.Mode.DST_ATOP 取上层非交集部分与下层交集部分 
12.PorterDuff.Mode.XOR 
13.PorterDuff.Mode.DARKEN 
14.PorterDuff.Mode.LIGHTEN 
15.PorterDuff.Mode.MULTIPLY 
16.PorterDuff.Mode.SCREEN 

posted @ 2013-01-21 13:44  清澈见底  阅读(125)  评论(0编辑  收藏  举报