對Canvas和Matrix的理解

2021-05-23 06:28:41 字數 775 閱讀 4443

我們看到的view檢視其實最終都是在canvas這個畫板上畫出來的,可以想象這個canvas有無限大,只是view元件在繪製時,即父元件呼叫dispatchdraw(canvas c)分發給各個子元件繪製時,根據子元件的大小和位置,分別呼叫canvas的translate(int dx, int dy)和cliprect(int l, int t, int r, int b)方法來設定canvas的當前原點座標和繪製的可見範圍。所以當我們在view元件通過ondraw(canvas c)方法繪製時,往往因為超過元件大小範圍而看不到繪製的一部分內容。

我們通過animation來實現view元件的動畫效果時候, 實際上是改變canvas的matrix, matrix矩陣的作用主要是對每個座標點(x, y)轉換為另外的(x', y'),必要的時候canvas還會通過cliprect()方法改變它的繪製可見範圍,這樣不至於做移動的時候看不到view元件。我們看到view的動畫效果時,其實它的大小和布局都沒有變化,所以會看到比較搞笑的現象,就是乙個button通過translate偏離原來位置後,它的touch事件響應還是在原來位置上,而不是所看到的眼前位置。

canvas的translate(int dx, int dy)方法,其實和通過設定它的matrix的posttranslate(int dx, int dy), pretranslate(int dx, int dy)方法效果是一樣的, 而matrix的pre系列方法和post系列方法在俺看來效果是一樣的,因為做過試驗列印資料比較過, 唯獨set系列的方法和pre, post的不同,它是直接設值,而後者它們是設定matrix的增量。

對Canvas和Matrix的理解

我們看到的view檢視其實最終都是在canvas這個畫板上畫出來的,可以想象這個canvas有無限大,只是view元件在繪製時,即父元件呼叫dispatchdraw canvas c 分發給各個子元件繪製時,根據子元件的大小和位置,分別呼叫canvas的translate int dx,int dy...

NumPy中ndarray和matrix的四則運算

numpy中最重要的類是ndarray,顧名思義,即多維陣列。import numpy as np行向量 a np.array 1,2,3 a.shape 3l,列向量 b np.array 1 2 3 b.shape 3l,1l 二維矩陣 m np.array 1,2,3 4,5,6 7,8,9 ...

論numpy中matrix 和 array的區別

論numpy中matrix 和 array的區別 csdn部落格 2014年03月07日 16 26 55 numpy matrices必須是2維的,但是 numpy arrays ndarrays 可以是多維的 1d,2d,3d nd matrix是array的乙個小的分支,包含於array。所以...