1. 程式人生 > >Canvas 基本用法學習筆記

Canvas 基本用法學習筆記

Canvas


直面意思是畫布,其實是分裝的一個工具類

一個Canvas類物件有四大基本要素

1、一個是用來儲存畫素的bitmap  -----  畫板
2、一個Canvas在Bitmap上進行繪製操作 ---- 畫布或者畫紙(Layer---saveLayer操作時,新建一個透明的畫布圖層)
3、繪製的東西
4、繪製的畫筆Paint

把我們的Canvas比喻成一塊畫板,為什麼?

今天的學習目標:
1、瞭解Canvas可以用來畫些什麼東西

除了常用的形狀之外

畫Region --- 區域的意思,它表示的Canvas圖層上的一塊封閉的區域

//建立一塊矩形的區域
paint.setColor(Color.RED);
paint.setStrokeWidth(2); paint.setStyle(Paint.Style.STROKE); Rect rect = new Rect(100,100,500,600); Region region = new Region(rect); Rect rect5 = new Rect(0,200,900,500); Region region1 = new Region(rect5); region1.op(region, Region.Op.XOR); RegionIterator regionIterator = new RegionIterator(region1); Rect rect1 = new
Rect(); while (regionIterator.next(rect1)){ canvas.drawRect(rect1,paint); }


有以下幾種方式:----具體含義 看圖
DIFFERENCE(0),
        INTERSECT(1),
        UNION(2),
        XOR(3),
        REVERSE_DIFFERENCE(4),
        REPLACE(5);

2、Canvas的變換技巧----瞭解Canvas裡面的座標系

Canvas裡面牽扯兩種座標系:Canvas自己的座標系、繪圖座標系

Canvas的座標系,
它就在View的左上角,做座標原點往右是X軸正半軸,往下是Y軸的正半軸,有且只有一個,唯一不變
繪圖座標系

它不是唯一不變的,它與Canvas的Matrix有關係,當Matrix發生改變的時候,繪圖座標系對應的進行改變,
同時這個過程是不可逆的(save和restore方法來儲存和還原變化操作)
Matrix又是通過我們設定translate、rotate、scale、skew來進行改變的

3、Canvas的狀態儲存---狀態棧、Layer棧

狀態棧--save、 restore方法來儲存和還原變換操作Matrix以及Clip剪裁
也可以通過restoretoCount直接還原到對應棧的儲存狀態

Layer棧--- saveLayer的時候都會新建一個透明的圖層(離屏Bitmap-離屏緩衝),並且會將saveLayer之前的一些Canvas操作延續過來
 後續的繪圖操作都在新建的layer上面進行
 當我們呼叫restore 或者 restoreToCount 時 更新到對應的圖層和畫布上