android xfermode繪圖

一、fermode:是來自 transfer-modes,在畫筆中設置xfermode後,畫筆在使用的時候就會應用設置的像素轉換模式。就相似於ps中的選取功能,留下的選取是從原選區中去除仍是合併,取交仍是除去,就這麼回事。android

二、fermode相關類之間的繼承關係:canvas

三、直接繼承子類有AvoidXfermode(避免繪圖或者只在上邊繪製)、PixelXorfermode(與目標作xor操做)和PorterDuffXfermode(一下幾種模式)api

(1)使用xfermode,首先繪製的爲dest,後繪製的爲src。結果就是目標圖形以某種mode顯示在src上。spa

(2)不要忘記設置關閉硬件加速,以在api 16如下起做用。setLayerType(LAYER_TYPE_SOFTWARE, paint);code

四、小案例:blog

(1)一個空心圓效果。繼承

//目標
        canvas.drawCircle(90, 90, 90, paint);
        //設置運算方式
        paint.setXfermode(new PorterDuffXfermode(android.graphics.PorterDuff.Mode.CLEAR));
        //
        canvas.drawCircle(90, 90, 30, paint);
        //清除fermode
        paint.setXfermode(null);

首先繪製一個大圓,設置畫筆的與畫板的計算方式爲清除,而後繪製一個小圓,清除繪製mode,就出現一個空心圓效果。圖片

(2)將圖片處理爲原形圖片處理

        //目標
        canvas.drawCircle(90, 90, 90, paint);
        //設置運算方式
        paint.setXfermode(new PorterDuffXfermode(android.graphics.PorterDuff.Mode.SRC_IN));
        //
        canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher), 0, 0, paint);
        //清除fermode
        paint.setXfermode(null);
相關文章
相關標籤/搜索