尊重作者勞動,轉(zhuǎn)載請注明出處
在自定義控件和繪圖的時(shí)候經(jīng)常用到畫筆Paint類.
今天來總結(jié)一下它的函數(shù)方法:


float accent()
在Paint繪制文字時(shí)有效。根據(jù)設(shè)置的字體和文字大小,返回baseline之上的高度,也就是上坡度。
int breakText (char[] text, int index, int count, float maxWidth, float[] measuredWidth)
Measure the text, stopping early if the measured width exceeds maxWidth. Return the number of chars that were measured, and if measuredWidth is not null, return in it the actual width measured.
在處理文本時(shí)會用到。截取一段字符串在給定寬度內(nèi)的文本。如果文本超出了給定的最大寬度,那么就返回截取的字符個(gè)數(shù)。如果沒有超出最大寬度,那么就返回實(shí)際的
- text:要處理的文本,不能為null;
- index:開始的位置;
- count:截取的字符數(shù)量;
- maxWidth:給定的最大寬度;
- measuredWidth:一個(gè)可選項(xiàng),可以為空,不為空時(shí)返回真實(shí)的測量值;
- 返回值:返回截圖的字符個(gè)數(shù)。
setAlpha(int a)
設(shè)置畫筆的透明度
setARGB(int a, int r, int g, int b)
設(shè)置透明度和RGB顏色值。
setColor
設(shè)置畫筆顏色。
setAntiAlias(boolean a)
打開抗鋸齒。不過這個(gè)抗鋸齒是依賴于算法的,在我們繪制棱角分明的圖像時(shí),比如一個(gè)矩形、一張位圖,我們不需要打開抗鋸齒。
setColorFilter(ColorFilter filter)
設(shè)置顏色過濾。這個(gè)就比較麻煩了,一般是傳入ColorMatrixColorFilter、LightingColorFilter和PorterDuffColorFilter這三個(gè)類的子類。簡單的說就說用來調(diào)節(jié)顏色的,詳細(xì)的講起來會很復(fù)雜。后面有時(shí)間單獨(dú)寫一篇。
setDither(boolean dither)
設(shè)置防抖動。就說讓顏色的變化更自然。來看一下設(shè)置了防抖動和沒有設(shè)置防抖動的效果。setFakeBoldText (boolean fakeBoldText)
設(shè)置文本仿粗體。
setFilterBitmap(boolean filter)
如果該項(xiàng)設(shè)置為true,則圖像在動畫進(jìn)行中會濾掉對Bitmap圖像的優(yōu)化操作,加快顯示速度,本設(shè)置項(xiàng)依賴于dither和xfermode的設(shè)置。
setFlags (int flags)
設(shè)置標(biāo)簽,通過標(biāo)簽來配置Paint對象。
setFontFeatureSettings(String settings)
設(shè)置字體的樣式。源碼中的注釋是和CSS樣式很像。
setHinting(int mode)
設(shè)置隱藏模式??梢栽O(shè)置為HINTING_OFF或者HINTING_ON。
setLetterSpacing(float letterSpacing)
設(shè)置行間距,默認(rèn)是0。
setLinearText (boolean linearText)
是否打開線性文本標(biāo)識。這個(gè)在Linear Layout中也有這個(gè)屬性。
setMaskFilter(MaskFilter maskfilter)
簡單的說就說給圖片加特效。詳細(xì)的話,請自行百度MaskFilter 。
setPathEffect(PathEffect effect)
設(shè)置路徑軌跡的效果。通常我們會調(diào)用canvas.drawPath(mPath, mPaint);來繪制一段path。默認(rèn)情況下是這種效果





詳解Paint的setMaskFilter(MaskFilter maskfilter)
setShader(Shader shader)
設(shè)置或者清空shade對象。
setShadowLayer(float radius, float dx, float dy, int shadowColor)
radius表示陰影的擴(kuò)散半徑;dx和dy表示陰影平面上的偏移值;shadowColor就不說了陰影顏色。
注意: 這個(gè)方法不支持硬件加速,所以我們要測試時(shí)必須先關(guān)閉硬件加速。
setStrokeCap(Paint.Cap cap)
設(shè)置畫筆的筆觸風(fēng)格。可選參數(shù)Paint.Cap下的ROUND、SQUARE、BUTT 。
setStrokeJoin(Paint.Join join)
設(shè)置接合處的形態(tài)??蛇x參數(shù):BEVEL,MITER,ROUND。
setStrokeWidth(float width)
當(dāng)畫筆樣式(style)為STROKE或FILL_OR_STROKE時(shí)(空心樣式時(shí)),設(shè)置筆刷的粗細(xì)度。
setStrokeMiter(float miter )
設(shè)置筆畫的傾斜度。
setStyle(Style style)
設(shè)置畫筆的樣式:
①Paint.Style.STROKE:描邊
②Paint.Style.FILL_AND_STROKE:描邊并填充
③Paint.Style.FILL:填充
setXfermode(Xfermode xfermode)
設(shè)置圖像的混合模式。記住下面這張圖就可以了。而且要先繪制src,再設(shè)置xfermode,最后再繪制dist