android繪圖之Paint(1)

Android 繪圖學(xué)習(xí)

Paint 講解開篇

android Paint淹真,Canvas

android中繪制特定圖案類似顯示中的繪畫需要畫筆和畫紙,為此android提供了Paint和Canvas。
Paint和Canvas分別代表畫筆和畫布唉铜。
The Paint class holds the style and color information about how to draw geometries, text and bitmaps.
Paint類似畫筆违帆,保存著繪制文本,圖形雇逞,圖片的樣式和顏色信息。(顏色茁裙,寬度塘砸,粗細(xì),透明度晤锥,字體樣式掉蔬,字體大欣认堋)。

The Canvas class holds the "draw" calls. To draw something, you need
4 basic components: A Bitmap to hold the pixels, a Canvas to host
the draw calls (writing into the bitmap), a drawing primitive (e.g. Rect,
Path, text, Bitmap), and a paint (to describe the colors and styles for the
drawing).
Canvas類似畫布女轿,用于繪制箭启。

提供了三種初始化方法:
Paint(),
Paint(int flags),
Paint(Paint paint)。

第二種構(gòu)造函數(shù)傳入了flag蛉迹,相當(dāng)于無參構(gòu)造之后調(diào)用了setFlags(int)傅寡,有很多種flag,這里舉個(gè)例子UNDERLINE_TEXT_FLAG(其他的flag見developers文檔)北救,繪制文字時(shí)會(huì)有下劃線荐操,多個(gè)flag或可以達(dá)到設(shè)置多個(gè)flag的目的。

Ps:設(shè)置的很多屬性都可以通過flag實(shí)現(xiàn)珍策,但沒有set函數(shù)形象托启。(例如ANTI_ALIAS_FLAG抗鋸齒,一般初始化時(shí)直接把抗鋸齒的flag填入)

Paint常用設(shè)置

Paint常用的設(shè)置函數(shù):
setAlpha()透明度
setAntiAlias()抗鋸齒
setColor(),setARGB()設(shè)置顏色
setStyle(Paint.Style style) 設(shè)置填充樣式
setStrokeCap(Paint.Cap cap) 畫筆的樣式(落筆攘宙,收筆時(shí))
setStrokeJoin(Paint.Join join)連接點(diǎn)的樣式
setStrokeWidth(float width)設(shè)置畫筆寬度
setShadowLayer(float radius, float dx, float dy, int shadowColor) 設(shè)置陰影
setTextSize(float textSize) 字體大小
setTextAlign(Paint.Align.RIGHT)設(shè)置字體對(duì)齊方式

后期講解:
setColorFilter(ColorFilter filter) 設(shè)置顏色過濾
setUnderlineText(true) 下劃線
setPathEffect() 設(shè)置路徑效果
setTypeface() 設(shè)置字體風(fēng)格
setFilterBitmap() 設(shè)置圖片過濾
setXfermode(Xfermode xfermode) xfermode設(shè)置圖像混合模式
setShader(Shader shader) 設(shè)置shader包括漸變shader屯耸,圖片shader
。蹭劈。疗绣。。链方。持痰。。祟蚀。

基本屬性使用

setAlpha 透明度

setAlpha(int a) 設(shè)置透明度,a 值得范圍 [0..255]工窍,僅僅改變setColor()的顏色的透明度,不改變顏色值前酿,0是完全透明患雏,255完全不透明。
注意:需要先調(diào)用setColor()罢维,再調(diào)用setAlpha才會(huì)生效淹仑,否則將會(huì)被覆蓋,因?yàn)閟etColor中包含了alpha肺孵。

setStyle 填充樣式

setStyle設(shè)置填充樣式匀借,所謂填充的樣式指只繪制線或者繪制同時(shí)填充:
Paint.Style.FILL 填充內(nèi)部,會(huì)把閉合區(qū)域填充顏色
Paint.Style.FILL_AND_STROKE 填充內(nèi)部和描邊
Paint.Style.STROKE 僅描邊平窘,僅僅繪制邊界
默認(rèn)FILL 填充內(nèi)部吓肋,

STROKE樣式

FILL_AND_STROKE樣式和FILL 類似但當(dāng)畫筆寬度很寬時(shí)會(huì)產(chǎn)生不同

顏色,字體瑰艘,對(duì)齊是鬼,抗鋸齒

setColor肤舞,setARGB設(shè)置顏色,設(shè)置畫筆的顏色均蜜,setARGB()參數(shù)范圍0-255李剖。
setAntiAlias(boolean) 抗鋸齒,使邊界更順滑(有些屏幕分辨率不高囤耳,導(dǎo)致像素點(diǎn)比較大篙顺,繪制邊界可能會(huì)有顆粒感,打開抗鋸齒邊界顆粒感會(huì)減少)紫皇。

setTextSize(float textSize) 字體大小慰安,單位是px腋寨,如果是dp要注意轉(zhuǎn)換聪铺。
setTextAlign(Paint.Align.RIGHT)設(shè)置字體對(duì)齊方式,根據(jù)下面的實(shí)例可以萄窜,對(duì)齊方式基于開始繪制的點(diǎn)铃剔。
一起講解:

mPaint.setTextSize(50);
mPaint.setTextAlign(Paint.Align.LEFT);
canvas.drawText("android Paint 學(xué)習(xí) LEFT",300,300,mPaint);
mPaint.setTextAlign(Paint.Align.CENTER);
canvas.drawText("android Paint 學(xué)習(xí) CENTER",300,400,mPaint);
mPaint.setTextAlign(Paint.Align.RIGHT);
canvas.drawText("android Paint 學(xué)習(xí) RIGHT",300,500,mPaint);


setTextAlign對(duì)齊是相對(duì)于開始繪制的坐標(biāo)點(diǎn)。

setShadowLayer 陰影

setShadowLayer(float radius, float dx, float dy, int shadowColor) 設(shè)置陰影


mPaint.setShadowLayer(10,-20,30,Color.GRAY);
canvas.drawText("android Paint 學(xué)習(xí) CENTER",getWidth()/2,450,mPaint);

setShadowLayer(float radius, float dx, float dy, int shadowColor)
Radius設(shè)置角度查刻,dx键兜,dy控制字體的上下左右出現(xiàn),有正負(fù)之分穗泵,dx的正負(fù)代表右左普气,dy的正負(fù)代表下上。

setStrokeCap

setStrokeCap(Paint.Cap.ROUND)
設(shè)置繪制起始點(diǎn)和結(jié)尾點(diǎn)的樣式佃延,
三種樣式ROUND,BUTT,SQUARE
Cap.ROUND(圓形)现诀、Cap.SQUARE(方形)、Paint.Cap.BUTT(無)
ROUND:

BUTT和SQUARE差別不大:

setStrokeJoin

setStrokeJoin(Paint.Join join)履肃,設(shè)置繪制path連接點(diǎn)的樣式
mPaint.setStrokeJoin(Paint.Join.ROUND);
// mPaint.setStrokeJoin(Paint.Join.MITER);
// mPaint.setStrokeJoin(Paint.Join.BEVEL);

Join.MITER(結(jié)合處為銳角)仔沿、
Join.Round(結(jié)合處為圓弧)、
Join.BEVEL(結(jié)合處為直線)

ROUND樣式:

image

MITER樣式:

image

BEVEL樣式:

其他暫不講解

setXfermode(Xfermode xfermode) xfermode設(shè)置圖像混合模式
setShader(Shader shader) 設(shè)置shader包括漸變shader尺棋,圖片shader
還有很多其他屬性會(huì)后續(xù)講解封锉。

android繪圖之Paint(1)
android繪圖之Canvas基礎(chǔ)(2)
Android繪圖之Path(3)
Android繪圖之drawText繪制文本相關(guān)(4)
Android繪圖之Canvas概念理解(5)
Android繪圖之Canvas變換(6)
Android繪圖之Canvas狀態(tài)保存和恢復(fù)(7)
Android繪圖之PathEffect (8)
Android繪圖之LinearGradient線性漸變(9)
Android繪圖之SweepGradient(10)
Android繪圖之RadialGradient 放射漸變(11)
Android繪制之BitmapShader(12)
Android繪圖之ComposeShader,PorterDuff.mode及Xfermode(13)
Android繪圖之drawText,getTextBounds,measureText,FontMetrics,基線(14)
Android繪圖之貝塞爾曲線簡(jiǎn)介(15)
Android繪圖之PathMeasure(16)
Android 動(dòng)態(tài)修改漸變 GradientDrawable

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末膘螟,一起剝皮案震驚了整個(gè)濱河市成福,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌荆残,老刑警劉巖奴艾,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異脊阴,居然都是意外死亡握侧,警方通過查閱死者的電腦和手機(jī)蚯瞧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來品擎,“玉大人埋合,你說我怎么就攤上這事√汛” “怎么了甚颂?”我有些...
    開封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)秀菱。 經(jīng)常有香客問我振诬,道長(zhǎng),這世上最難降的妖魔是什么衍菱? 我笑而不...
    開封第一講書人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任赶么,我火速辦了婚禮,結(jié)果婚禮上脊串,老公的妹妹穿的比我還像新娘辫呻。我一直安慰自己,他們只是感情好琼锋,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開白布放闺。 她就那樣靜靜地躺著,像睡著了一般缕坎。 火紅的嫁衣襯著肌膚如雪怖侦。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評(píng)論 1 300
  • 那天谜叹,我揣著相機(jī)與錄音匾寝,去河邊找鬼。 笑死叉谜,一個(gè)胖子當(dāng)著我的面吹牛旗吁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播停局,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼很钓,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了董栽?” 一聲冷哼從身側(cè)響起码倦,我...
    開封第一講書人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎锭碳,沒想到半個(gè)月后袁稽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡擒抛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年推汽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了补疑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡歹撒,死狀恐怖莲组,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情暖夭,我是刑警寧澤锹杈,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站迈着,受9級(jí)特大地震影響竭望,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜裕菠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一咬清、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧糕韧,春花似錦枫振、人聲如沸喻圃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽斧拍。三九已至雀扶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間肆汹,已是汗流浹背愚墓。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留昂勉,地道東北人浪册。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像岗照,于是被迫代替她去往敵國(guó)和親村象。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容