概述
drawXXX() 系列方法和 Paint 的基礎(chǔ)掌握了沐兵,就能夠應(yīng)付簡(jiǎn)單的繪制需求剿配。它們主要包括:
- itemitemCanvas 類(lèi)下的所有 draw- 打頭的方法响迂,例如 drawCircle() drawBitmap()蹋笼。
- Paint 類(lèi)的幾個(gè)最常用的方法。具體是:
- Paint.setStyle(Style style) 設(shè)置繪制模式
- Paint.setColor(int color) 設(shè)置顏色
- Paint.setStrokeWidth(float width) 設(shè)置線條寬度
- Paint.setTextSize(float textSize) 設(shè)置文字大小
- Paint.setAntiAlias(boolean aa) 設(shè)置抗鋸齒開(kāi)關(guān)
顏色填充
drawRGB(int r, int g, int b) 和 drawARGB(int a, int r, int g, int b) 炎功,它們和 drawColor(color) 只是使用方式不同枚冗,作用都是一樣的。
這類(lèi)顏色填充方法一般用于在繪制之前設(shè)置底色蛇损,或者在繪制之后為界面設(shè)置半透明蒙版赁温。
繪制圖形采用的是View坐標(biāo)系
Alt
抗鋸齒從某種角度講,它也造成了圖形的顏色失真淤齐。
drawArc(float left, float top, float right, float bottom, float startAngle, float sweepAngle, boolean useCenter, Paint paint) 繪制弧形或扇形
startAngle 是弧形的起始角度(x 軸的正向股囊,即正右的方向,是 0 度的位置更啄;順時(shí)針為正角度稚疹,逆時(shí)針為負(fù)角度),sweepAngle 是弧形劃過(guò)的角度祭务;useCenter 表示是否連接到圓心内狗,如果不連接到圓心,就是弧形义锥,如果連接到圓心柳沙,就是扇形。
paint.setStyle(Paint.Style.FILL); // 填充模式
canvas.drawArc(200, 100, 800, 500, -110, 100, true, paint); // 繪制扇形
canvas.drawArc(200, 100, 800, 500, 20, 140, false, paint); // 繪制弧形
paint.setStyle(Paint.Style.STROKE); // 畫(huà)線模式
canvas.drawArc(200, 100, 800, 500, 180, 60, false, paint); // 繪制不封口的弧形
Alt
drawPath(Path path, Paint paint) 畫(huà)自定義圖形
Path 有兩類(lèi)方法拌倍,一類(lèi)是直接描述路徑的赂鲤,另一類(lèi)是輔助的設(shè)置或計(jì)算。
Path方法第一類(lèi):直接描述路徑柱恤。
這一類(lèi)方法還可以細(xì)分為兩組:添加子圖形和畫(huà)線(直線或者曲線)
第一組:addXxx() ————添加子圖形
- addCircle(float x,float y,float radius,Direction dir)添加圓数初,最有一個(gè)參數(shù)是表示畫(huà)圓的路徑的方向。調(diào)用該方法后梗顺,使用canvas.drawPath(path,paint)就能畫(huà)出一個(gè)圓
第二組:xxxTo() —————畫(huà)線(直線或曲線)
- lineTo()泡孩、rLineTo()畫(huà)直線,后者使用的是相對(duì)坐標(biāo)
- moveTo()寺谤、rMoveTo()移動(dòng)到目標(biāo)位置
- arcTo()畫(huà)弧形珍德,但是多了一個(gè)參數(shù)forceMoveTo,代表是否留下移動(dòng)的痕跡
- addArc()也是畫(huà)弧形的矗漾,其實(shí)就是直接使用了forceMoveTo = true的簡(jiǎn)化版arcTo()
- close() 封閉當(dāng)前子圖形,即由當(dāng)前位置向當(dāng)前子圖形的起點(diǎn)繪制一條直線薄料。
Path方法第二類(lèi):輔助的設(shè)置或計(jì)算
使用較少
Path.setFillType(Path.FillType ft)設(shè)置填充模式
-
EVEN_ODD(全填充)
Alt -
WINDING(默認(rèn)值)(交叉填充)
Alt - INVERSE_EVEN_ODD
- INVERSE_WINDING
Alt