1.Canvas常用操作
操作類型 | 相關API | 備註 |
---|---|---|
基礎方法 | getDensity, getWidth, getHeight,getDrawFilter,isHardwareAccelerated(API 11),getMaximumBitmapWidth,getMaximumBitmapHeight,getDensity,quickReject,isOpaque,setBitmap,setDrawFilter | |
繪製顏色 | drawColor, drawRGB, drawARGB,drawPaint | 使用單一顏色填充畫布 |
繪製基本形狀 | drawPoint, drawPoints, drawLine, drawLines, drawRect, drawRoundRect, drawOval, drawCircle, drawArc | 依次爲 點、線、矩形、圓角矩形、橢圓、圓、圓弧 |
繪製圖片 | drawBitmap, drawPicture | 繪製位圖和圖片 |
繪製文本 | drawText, drawPosText, drawTextOnPath | 依次爲 繪製文字、繪製文字時指定每個文字位置、根據路徑繪製文字 |
繪製路徑 | drawPath | 繪製路徑,繪製貝塞爾曲線時也需要用到該函數 |
頂點操作 | drawVertices, drawBitmapMesh | 通過對頂點操作可以使圖像形變,drawVertices直接對畫布作用、 drawBitmapMesh只對繪製的Bitmap作用 |
畫布剪裁 | clipPath, clipRect, clipRegion,getClipBounds | 畫布剪裁相關方法 |
畫布快照 | save, restore, saveLayer, saveLayerXxx, restoreToCount, getSaveCount | 依次爲 保存當前狀態、 回滾到上一次保存的狀態、 保存圖層狀態、 回滾到指定狀態、 獲取保存次數 |
畫布變換 | translate, scale, rotate, skew | 依次爲 位移、縮放、 旋轉、錯切 |
Matrix(矩陣) | getMatrix, setMatrix, concat | 實際畫布的位移,縮放等操作的都是圖像矩陣Matrix,只不過Matrix比較難以理解和使用,故封裝了一些常用的方法。 |
2.Path常用操作
作用 | 相關方法 | 備註 |
---|---|---|
移動起點 | moveTo | 移動下一次操作的起點位置 |
設置終點 | setLastPoint | 重置當前path中最後一個點位置,如果在繪製之前調用,效果和moveTo相同 |
連接直線 | lineTo | 添加上一個點到當前點之間的直線到Path |
閉合路徑 | close | 連接第一個點連接到最後一個點,形成一個閉合區域 |
添加內容 | addRect, addRoundRect, addOval, addCircle, addPath, addArc, arcTo | 添加(矩形, 圓角矩形, 橢圓, 圓, 路徑, 圓弧) 到當前Path (注意addArc和arcTo的區別) |
是否爲空 | isEmpty | 判斷Path是否爲空 |
是否爲矩形 | isRect | 判斷path是否是一個矩形 |
替換路徑 | set | 用新的路徑替換到當前路徑所有內容 |
偏移路徑 | offset | 對當前路徑之前的操作進行偏移(不會影響之後的操作) |
貝塞爾曲線 | quadTo, cubicTo | 分別爲二次和三次貝塞爾曲線的方法 |
rXxx方法 | rMoveTo, rLineTo, rQuadTo, rCubicTo | 不帶r的方法是基於原點的座標系(偏移量), rXxx方法是基於當前點座標系(偏移量) |
填充模式 | setFillType, getFillType, isInverseFillType, toggleInverseFillType | 設置,獲取,判斷和切換填充模式 |
提示方法 | incReserve | 提示Path還有多少個點等待加入**(這個方法貌似會讓Path優化存儲結構)** |
布爾操作(API19) | op | 對兩個Path進行布爾運算(即取交集、並集等操作) |
計算邊界 | computeBounds | 計算Path的邊界 |
重置路徑 | reset, rewind | 清除Path中的內容 reset不保留內部數據結構,但會保留FillType. rewind會保留內部的數據結構,但不保留FillType |
矩陣操作 | transform | 矩陣變換 |
3.PathMeasure常用操作
顧名思義,PathMeasure是一個用來測量Path的類,主要有以下方法:
構造方法
方法名 | 釋義 |
---|---|
PathMeasure() | 創建一個空的PathMeasure |
PathMeasure(Path path, boolean forceClosed) | 創建 PathMeasure 並關聯一個指定的Path(Path需要已經創建完成)。 |
公共方法
返回值 | 方法名 | 釋義 |
---|---|---|
void | setPath(Path path, boolean forceClosed) | 關聯一個Path |
boolean | isClosed() | 是否閉合 |
float | getLength() | 獲取Path的長度 |
boolean | nextContour() | 跳轉到下一個輪廓 |
boolean | getSegment(float startD, float stopD, Path dst, boolean startWithMoveTo) | 截取片段 |
boolean | getPosTan(float distance, float[] pos, float[] tan) | 獲取指定長度的位置座標及該點切線值 |
boolean | getMatrix(float distance, Matrix matrix, int flags) | 獲取指定長度的位置座標及該點Matrix |
4.Matrix常用操作
方法類別 | 相關API | 摘要 |
---|---|---|
基本方法 | equals hashCode toString toShortString | 比較、 獲取哈希值、 轉換爲字符串 |
數值操作 | set reset setValues getValues | 設置、 重置、 設置數值、 獲取數值 |
數值計算 | mapPoints mapRadius mapRect mapVectors | 計算變換後的數值 |
設置(set) | setConcat setRotate setScale setSkew setTranslate | 設置變換 |
前乘(pre) | preConcat preRotate preScale preSkew preTranslate | 前乘變換 |
後乘(post) | postConcat postRotate postScale postSkew postTranslate | 後乘變換 |
特殊方法 | setPolyToPoly setRectToRect rectStaysRect setSinCos | 一些特殊操作 |
矩陣相關 | invert isAffine(API21) isIdentity | 求逆矩陣、 是否爲仿射矩陣、 是否爲單位矩陣 … |