Android——繪圖工具類Canvas,Paint,Path。
簡介
Android通過繪圖工具類,在Canvas上重繪元件。
類
Canvas:畫布,用於繪製圖形
構造方法:
Canvas(Bitmap):
在Bitmap上繪製圖形。
Canvas():
建立一個空畫布,沒什麼用。
方法:
void drawRect(float left, float top, float right, float bottom, Paint paint)
引數:
left:矩形左邊x座標
top:矩形頂部y座標
right:矩形右邊x座標
bottom:矩形底部y座標
paint:畫筆
返回值:無
返回值意義:無
作用:根據left,top,right,bottom座標和paint畫筆樣式設定,繪製矩形。
void drawOval(float left,float top,float right,float bottom,Paint paint)
引數:
left:圓形左邊x座標
top:圓形頂部y座標
right:圓形右邊x座標
bottom:圓形底部y座標
paint:畫筆
返回值:無
返回值意義:無
作用:根據left,top,right,bottom座標和paint畫筆樣式設定,繪製圓形。
void drawRoundRect(float left , float top , float right , float bottom , float rx , float ry , Paint paint)
引數:
left:圓角矩形左邊x座標
top:圓角矩形頂部y座標
right:圓角矩形右邊x座標
bottom:圓角矩形底部y座標
rx:圓角矩形的圓角rx長度
ry:圓角矩形的圓角ry長度
返回值:無
返回值意義:無
作用:根據left,top,right,bottom座標和圓角的rx,ry半徑和paint畫筆。繪製圓角矩形。
void drawPath(Path path , Paint paint)
引數:
path:路徑物件
paint:畫筆
返回值:無
返回值意義:無
作用:用path設定最後一個點和上一個點的座標進行繪製圖形
int saveLayer(RectF bounds, Paint paint, int saveFlags)
引數:
bounds:要儲存的矩形四邊座標
paint:畫筆
saveFlags:Canvas.xxxxxFlag
返回值:int
返回值意義:第幾次儲存的數
作用:
儲存當前矩陣並將其剪輯到私有堆疊上。
隨後對平移、縮放、旋轉、傾斜、concat或clipRect、clipPath的呼叫都將照常執行,但當對restore()進行平衡呼叫時,這些呼叫將被忘記,而save()之前存在的設定將被恢復。
save方法用於臨時儲存畫布座標系統的狀態
restore方法可以用來恢復save之後設定的狀態,
void restoreToCount( int count )
引數:
count : 要恢復的矩形引數
返回值:void
返回值意義:void
作用:恢復之前設定的座標
(主要是自定義元件的時候使用)
類:
Paint:畫筆,設定繪畫樣式。如顏色,粗細,看據此。
方法
void setColor(Color color)
引數:
color:顏色物件
返回值:void
返回值意義:無
作用:設定畫筆顏色
void setStrokeWidth( int strokeWidth )
引數:
strokeWidth:畫筆粗細
返回值:void
返回值意義:無
作用:設定畫筆粗細
void setAntiAlias(boolean isAntiAlias)
引數:
antialias:是否開啟抗鋸齒
返回值:void
返回值意義:無
作用:開啟抗鋸齒
void setStyle(int Style)
引數:
style:選值。Paint.Style.Fill,Paint.style.STROKE.
返回值:無
返回值意義:無
作用:選擇畫筆的風格:填充,描邊
類
Path:路徑物件,設定第一個點(moveTo(ifloat x , float y))和下一個點(lineTo(float x , flaot y ))
方法:
void moveTo(float x , float y)
引數:
x:點的x座標
y:點的y座標
返回值:無
返回值意義:無
作用:移動Path到第一個點
void lineTo(float x , float y)
引數:
x:點的x座標
y:點的y座標
返回值:無
返回值意義:無
作用:移動Path到下一個點。
使用:
// 用Canvas ,Paint,Path:製作個人繪畫板 public class MyPaint07 extends View { private Paint paint; private Path path; public MyPaint07(Context context) { super(context); init(); } public MyPaint07(Context context, @Nullable AttributeSet attrs) { super(context, attrs); init(); } public MyPaint07(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } public MyPaint07(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); init(); } public void init(){ paint = new Paint(Paint.ANTI_ALIAS_FLAG); paint.setStyle(Paint.Style.STROKE); paint.setColor(Color.parseColor("#00ff00")); paint.setStrokeWidth(10); path = new Path(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawPath(path,paint); } @Override public boolean onTouchEvent(MotionEvent event) { switch ( event.getAction() ){ case MotionEvent.ACTION_DOWN: Log.i(TAG, "onTouchEvent: do it"); path.moveTo(event.getX(),event.getY()); break; case MotionEvent.ACTION_MOVE: path.lineTo(event.getX(),event.getY()); break; } invalidate(); return true; } private static final String TAG = "MyPaint07"; }