android canvas 使用操作

最近在學習自定 View 的內容,發現其實在 onDraw() 的時候可以對 Canvas 進行各種各樣的操作,比如平移、旋轉、縮放、傾斜當然還有切割畫布和反向切割畫布。下面就來根據實際操作介紹一下。

1.平移 translate

        //先設置畫筆
        mPaint.setStrokeWidth(5);
        mPaint.setStyle(Paint.Style.STROKE);
        mPaint.setColor(Color.RED);     
        //平移   
        canvas.drawRect(0, 0, 500, 500, mPaint);
        canvas.translate(50, 50);
        mPaint.setColor(Color.YELLOW);
        canvas.drawRect(0, 0, 500, 500, mPaint);
        canvas.translate(-100, -100);
        mPaint.setColor(Color.BLUE);
        canvas.drawRect(0, 0, 500, 500, mPaint);

第一步就是先畫一個矩形用來做參照,然後對畫布進行一個平移操作 canvas.translate(50, 50); 第一個參數是 x 軸平移距離,第二個是 y 平移的距離,平移後我們設置一下畫筆顏色然後再畫一個矩形,效果如下圖

 

2.縮放 scale

        //縮放
        canvas.drawRect(0, 0, 500, 500, mPaint);
        canvas.scale(0.5f, 0.5f);
        canvas.drawRect(0, 0, 500, 500, mPaint);
        canvas.scale(1.5f, 1.5f);
        canvas.drawRect(0, 0, 500, 500, mPaint);

 

縮放有一個重載的方法  canvas.scale(0.5f, 0.5f, 500, 500);

前面還是 x y 縮放的比列,後面的兩個參數表示的是座標點,保持哪個點不變然後開始縮放

保持右下角的點不變效果如下

3.旋轉 rotate

        //旋轉
        canvas.translate(400, 400);
        canvas.drawRect(0, 0, 500, 500, mPaint);
        canvas.rotate(45);
        mPaint.setColor(Color.BLUE);
        canvas.drawRect(0, 0, 500, 500, mPaint);
        canvas.rotate(45,250,250);
        mPaint.setColor(Color.GREEN);
        canvas.drawRect(0, 0, 500, 500, mPaint);

旋轉是按照角度旋轉的,也有一個重載的方法表示你按照哪個點進行旋轉。效果如下

第一次旋轉後,第二次再設置表示在旋轉的基礎上再進行相應的操作

4.傾斜 skew

這個有兩個參數 sx、sy 這些都是 float 類型

傾斜是根據 三角函數中的 正切函數tan(A)=a/b,就是說對邊比鄰邊

1就是45度

        //傾斜
        canvas.drawRect(0, 0, 500, 500, mPaint);
        canvas.skew(1, 0);//傾斜是按照 tan 1就是45度
        mPaint.setColor(Color.BLUE);
        canvas.drawRect(0, 0, 500, 500, mPaint);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章