當前位置:
首頁 > 知識 > Paint幾個枚舉/常量值以及ShadowLayer陰影效果

Paint幾個枚舉/常量值以及ShadowLayer陰影效果

1.get枚舉用法:

不知大家對枚舉陌生還是熟悉,這裡把貼下Paint.Style相關的調用代碼(帶有參構造方法的枚舉) ,讓大家體會體會:

public enum Style {
//定義枚舉,通過括弧賦值
FILL (0),
STROKE (1),
FILL_AND_STROKE (2);
//有參構造方法
Style(int nativeInt) {
this.nativeInt = nativeInt;
}
final int nativeInt;
}
//設置畫筆Style的方法
public void setStyle(Style style) {
native_setStyle(mNativePaint, style.nativeInt);
}
//JNI設置畫筆風格的方法,這裡我們無需關注
private static native void native_setStyle(long native_object, int style);

下面我們一一來解釋這些枚舉值的作用!



1.Paint.Style


作用:畫筆的樣式 可選值:

  • FILL

    :填充內部(默認)
  • STROKE

    :只描邊
  • FILL_AND_STROKE

    :填充內部與描邊

方法調用:setStyle(Paint.Style style) 對應效果:

Paint幾個枚舉/常量值以及ShadowLayer陰影效果



2.Paint.Cap


作用:筆觸風格,設置畫筆始末端的圖形(畫筆開始畫的第一點與最後一點) 可選值:

  • BUTT

    :筆觸是長方形且不超過路徑(默認)
  • ROUND

    :筆觸是圓形
  • SQUARE

    :筆觸是正方形

方法調用:setStrokeCap(Paint.Cap cap)

對應效果:平時我們直接畫的是第一個,其他兩個會比普通的多一點而外的區域,第二個 是圓角,第三個是矩形!

Paint幾個枚舉/常量值以及ShadowLayer陰影效果



3.Paint.Join


作用:設置接合處的狀態,比如你的線是由多條小線拼接而成,拼接處的形狀 可選值:

  • MITER

    :接合處為銳角(默認)
  • ROUND

    :接合處為圓弧
  • BEVEL

    :接合處為直線

方法調用:setStrokeJoin(Paint.Join join)

一般圓弧用得多,可參見之前的擦掉美女衣服Demo的顯示

另外還有個setStrokeMiter(float miter)是設置筆畫的傾斜度,miter > = 0; 如:小時候用的鉛筆,削的時候斜與垂直削出來的筆尖效果是不一樣的。 主要是用來設置筆觸的連接處的樣式。可以和setStrokeJoin()來比較比較。


4.Paint.Align


作用:設置繪製文本的對其方式,就是相對於繪製文字的[x,y]起始坐標 可選值:

  • LEFT

    :在起始坐標的左邊繪製文本
  • RIGHT

    :在起始坐標的右邊繪製文本
  • CENTER

    :以其實坐標為中心繪製文本

方法調用:setTextAlign(Paint.Align align)

對應效果:另外可調用setTextSize()設置繪製文本的大小~

Paint幾個枚舉/常量值以及ShadowLayer陰影效果



5.Paint.FontMetrics和Paint.FontMetricsInt

字體屬性及測量,另外這兩個方法是一樣的,只是後者取到的值是一個整形, 這裡我們選FontMetricsInt來給大家講解下,有下面這五個常量值,這裡參考的基準點是: 下劃線的位置(Baseline)

  • top

    :最高字元到baseline的距離,即ascent的最大值
  • ascent

    :字元最高處的距離到baseline的值
  • descent

    :下劃線到字元最低處的距離
  • bottom

    :下劃線到最低字元的距離,即descent的最大值
  • leading

    :上一行字元的descent到下一行的ascent之間的距離

我們看幾個圖幫助理解下:

Paint幾個枚舉/常量值以及ShadowLayer陰影效果


Paint幾個枚舉/常量值以及ShadowLayer陰影效果


Paint幾個枚舉/常量值以及ShadowLayer陰影效果

然後我們隨意畫一串字母,把這些值列印出來: canvas.drawText("abcdefghijklnmopqrstuvwxyz", 400, 400, mPaint1);

Log.e("HEHE", mPaint1.getFontMetricsInt().toString());

運行下,我們可以看到,列印出來的Log如下:

Paint幾個枚舉/常量值以及ShadowLayer陰影效果


看完思考思考,畫一畫,應該不難理解!這裡我們知道下就好,如果你想更 深入研究,可以參考下這篇:Android字元串進階之三:字體屬性及測量(FontMetrics)


6.ShadowLayer設置陰影效果


我們在TextView那一節就教過大家為TextView的文本設置陰影效果,而Paint其實也提供了設置 陰影效果的API:setShadowLayer(float radius, float dx, float dy, int shadowColor)

參數:radius為陰影的角度,dx和dy為陰影在x軸和y軸上的距離,shadowColor為陰影的顏色 我們可以寫個非常簡單的句子驗證下:

mPaint1.setShadowLayer(5,0,0,Color.BLACK);
canvas.drawText("畢竟基神~", 400, 400, mPaint1); //繪製文字

效果如下

Paint幾個枚舉/常量值以及ShadowLayer陰影效果

另外我們還可以調用clearShadowLayer()來清除這個陰影層~



本節小結:


好的,本節給大家講解了下Paint裡面的幾個枚舉值以及靜態常量,以及ShadowLayer為畫筆 設置陰影效果或調用clearShadowLayer()清除陰影層~其實這些東西都可以自己去看源碼以及 文檔,有疑惑就動手寫個Demo,很多東西就自然一清二楚的了,嗯,就說這麼多,謝謝~

另外,可能你不知道在哪看到了我的QQ,但是可以的話盡量加群好么,平時也要上班, 一個兩個還好,一堆人,有心無力,有時幫忙解決問題,結果一天什麼都沒做,望各位體諒,

Paint幾個枚舉/常量值以及ShadowLayer陰影效果

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

Tengine 安裝配置全過程
centos下apache伺服器以及Tomcat的配置

TAG:程序員小新人學習 |