Android圖形映像之以Bitmap作為Canvas畫布的材料

來源:互聯網
上載者:User

Android圖形映像之以Bitmap作為Canvas畫布的材料
概述

當以Bitmap作為畫布材料時,可以繪製出以下各種圖案:

demo
/** * 圖形影像處理:在Bitmap上繪畫 */public class MyBitMapViewSec extends View {    private int width;    private int height;    private Paint mPaintCircle;    private Paint mPaintRect;    private Bitmap mBitmap;    private Canvas mCanvasBm;    public MyBitMapViewSec(Context context) {        super(context);    }    public MyBitMapViewSec(Context context, AttributeSet attrs) {        super(context, attrs);        mPaintCircle = new Paint();        mPaintCircle.setColor(Color.YELLOW);        mPaintRect = new Paint();        mPaintRect.setColor(Color.GREEN);        //XOR:交疊和被交疊部分均不顯示;DST_OVER:自身交疊部分不顯示;SRC_OVER交疊部分只顯示自己        PorterDuffXfermode mode = new PorterDuffXfermode(PorterDuff.Mode.XOR);        mPaintRect.setXfermode(mode);    }    @Override    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        super.onMeasure(widthMeasureSpec, heightMeasureSpec);        width = getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec);        height = getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec);        setMeasuredDimension(width, height);        //參數:畫布寬、長尺寸和格式        mBitmap = Bitmap.createBitmap(width,height, Bitmap.Config.ARGB_8888);        mCanvasBm = new Canvas(mBitmap);//自訂一個畫布,畫布材料是Bitmap對象    }    @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        canvas.drawColor(Color.RED);        //先在bitmap上畫        mCanvasBm.drawCircle(width / 2, height / 2, width / 2, mPaintCircle);        mCanvasBm.drawRect(0,0,width/2,width/2,mPaintRect);        //將畫好的bitmap畫出來        canvas.drawBitmap(mBitmap,0,0,null);//這一步必不可少    }}

結果示範:
PorterDuffXfermode mode = new PorterDuffXfermode(參數);
參數為PorterDuff.Mode.DST_OVEL時:

參數為PorterDuff.Mode.XOR時:

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.