Android 繪圖(一) Paint

來源:互聯網
上載者:User

標籤:

   瞭解Android繪圖或者自訂View的同學,都知道Canvas 類、Paint類等。今天就來看看Paint的有關描述。

    首先看看官網的定義:

The Paint class holds the style and color information about how to draw geometries, text and bitmaps.
翻譯:Paint類擁有如何繪製幾何圖形、文本、位元影像的顏色和樣式等資訊。

     Android系統提供了設定畫筆屬性的Api,接下來,就來看一些常用Api的使用說明。

  一. Paint類常用Api介紹。

1 public float ascent () 返回基準以上的距離基於當前文本的字型和文字大小。
2 public float descent ()返回基準以下的距離基於當前文本的字型和文字大小。
擷取文字大小時,結合ascent()和descent()使用!
3 public float measureText (String text)返迴文字的寬度 
4 public void setARGB (int a, int r, int g, int b)參數  a 畫筆顏色的透明度,取值範圍(0..255).  r 畫筆紅色色值,取值範圍(0..255).  g 畫筆綠色色值,取值範圍(0..255).  b 畫筆藍色色值,取值範圍(0..255). 設定畫筆的ARGB值
5 public void setAntiAlias (boolean aa)參數  aa 真,設定鋸齒平滑,假,清除標識設定是否消除鋸齒
6 public void setColor (int color)參數  color 顏色值(包含透明度)設定畫筆的顏色. 設定畫筆的顏色
7 public ColorFilter setColorFilter (ColorFilter filter)參數   filter 可能為空白。這個綠色器將代替畫筆.設定或清除畫筆的綠色器,返回參數值
8 public void setStrokeWidth (float width)參數   width  設定畫筆的筆畫寬度,無論畫筆樣式是的 Stroke 或者StrokeAndFill. 設定筆畫的寬度。如果為0,則是hairline模式。Hairlines經常繪製一個像素依靠於畫布的matrix。
9 public PathEffect setPathEffect (PathEffect effect)參數effect 可能為空白值。patheffect將替代畫筆.設定繪製路徑的路徑效果。設定或者清除路徑效果。傳遞空值,將清除任何以前的路徑效果。為方便起見,也返回傳遞的參數。
10 public void setStyle (Paint.Style style)參數  style 畫筆的樣式 設定畫筆的樣式,使用它來控制幾何圖形的解釋(除了drawBitmap,總是假定Fill)。畫筆樣式分三種:(1).Paint.Style.STROKE:描邊(2).Paint.Style.FILL_AND_STROKE:描邊並填充(3).Paint.Style.FILL:填充
11 public void setTextAlign (Paint.Align align)參數  align 繪製文本時的畫筆的對齊設定畫筆的文本對齊。它控制文本相對於原點的位置。
12 public void setTextSize (float textSize)參數  textSize 畫筆的文字大小設定畫筆的文字大小。值必須大於0。

以上就是畫筆常用的一些方法,下面,我們看看具體使用。

二. 方法使用。

1.建立Android項目。

2.自訂一個View。

  

package cn.xinxing.customview.view;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Paint.Style;import android.util.AttributeSet;import android.util.TypedValue;import android.view.View;public class View1 extends View {private Paint mPaint = new Paint();private int DEFAULT_STROKE_WIDTH = 10;// strokeWidthprivate int DEFAULT_RADIUS = 30;// 半徑private int DEFAULT_TEXT_SIZE=20;//private int mStrokeWidth = dp2px(DEFAULT_STROKE_WIDTH);private int mRadius = dp2px(DEFAULT_RADIUS);private int mTextSize=sp2px(DEFAULT_TEXT_SIZE);public View1(Context context) {this(context, null);// TODO Auto-generated constructor stub}public View1(Context context, AttributeSet attrs) {this(context, attrs, 0);// TODO Auto-generated constructor stub}public View1(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);// TODO Auto-generated constructor stub}@Overrideprotected void onDraw(Canvas canvas) {// TODO Auto-generated method stub// 繪製一條線段mPaint.setColor(Color.RED);// 設定畫筆顏色為白色mPaint.setAntiAlias(true);// 坑鋸齒mPaint.setStrokeWidth(mStrokeWidth);// 設定畫筆的寬度canvas.drawLine(0, 0, 400, 0, mPaint);// 繪製一條線段// 繪製空心圓mPaint.setColor(Color.BLUE);// 設定畫筆顏色為藍色mPaint.setAntiAlias(true);// 坑鋸齒mPaint.setStyle(Style.STROKE);// 樣式是描邊canvas.drawCircle(100, 60, mRadius, mPaint);// 繪製圓// 繪製填充圓mPaint.setColor(Color.GREEN);// 設定畫筆顏色為綠色mPaint.setStyle(Style.FILL);// 樣式是填充canvas.drawCircle(100, 180, mRadius, mPaint);// 繪製圓// 繪製圓mPaint.setColor(Color.GRAY);// 設定畫筆顏色為綠色mPaint.setStyle(Style.FILL_AND_STROKE);// 樣式是描邊和填充canvas.drawCircle(100, 300, mRadius, mPaint);// 繪製圓// 設定圓的描邊和填充為不一樣的顏色mPaint.setColor(Color.RED);// 設定畫筆顏色為綠色mPaint.setStyle(Style.STROKE);// 樣式是描邊canvas.drawCircle(100, 400, mRadius, mPaint);// 繪製圓mPaint.setColor(Color.YELLOW);// 設定畫筆顏色為綠色mPaint.setStyle(Style.FILL);// 樣式是填充canvas.drawCircle(100, 400, mRadius, mPaint);// 繪製圓// 繪製文字mPaint.setColor(Color.BLACK);// 設定畫筆顏色為綠色mPaint.setTextSize(mTextSize);//設定畫筆文字的大小canvas.drawText("80%", 100, 500, mPaint);//繪製文字}/** * @param dpVal * @return */private int dp2px(int dpVal) {return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,dpVal, getResources().getDisplayMetrics());}/** * @param spVal * @return */private int sp2px(int spVal) {return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,spVal, getResources().getDisplayMetrics());}}
代碼比較簡單,就不多說 了!來張運行後的,


三. 總結。

     本篇只是簡單的列舉了Paint類的常用方法以及簡單使用,僅供參考!本人水平有限,如有錯誤,歡迎指出!


Android 繪圖(一) Paint

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.