Android 基礎圖形繪製API詳解

Canvas類常用的方法:

API 功能 方法
顏色 drawARGB(), drawRGB(), drawColor()
畫點 drawPoint(),
畫線(多條) drawLine(),drawLines()
矩形(圓角矩形) drawRect(), drawRoundRect()
圖片 drawBitmap(),
文本 drawText(),drawPosText(),drawTextOnPath()
drawCircle()
橢圓 drawOval()
圓弧 drawArc()
路徑 drawPath()


### 下面通過例子詳細說明上述方法:
####1. **畫點 drawPoint**

<font color=#ff0000 size=4 face="黑體">(1) 單點:</font>

####```drawPoint(float x, float y, Paint paint) ```
><font color=#aa33ff size=3 face="黑體">參數:</font>
**float X:**點的X座標
**float Y:**點的Y座標

```java
Paint paint = new Paint();
paint.setColor(Color.BLUE);
paint.setStrokeWidth(30);
canvas.drawPoint(100, 100, paint);




<div class="se-preview-section-delimiter"></div>

這裏寫圖片描述


(2) 填充整個Canvas:

drawPoint(Paint paint)

參數:
Paint paint:填充Canvas的畫筆

Paint paint = new Paint();
paint.setColor(Color.BLUE);
canvas.drawPaint(paint);




<div class="se-preview-section-delimiter"></div>

這裏寫圖片描述


(3) 多個點 :

public void drawPoints(float[] pts, Paint paint)

參數:
float[] pts: 點的集合,從第一個開始兩兩一組爲一個點,元素個數必須是偶數,形如:pts = {x1, y1, x2, y2, x3, y3, ……};

Paint paint = new Paint();
paint.setColor(Color.BLUE);
paint.setStrokeWidth(30);
float [] points = new float[]{20, 20, 100, 100, 250, 250, 450, 450};
canvas.drawPoints(points, paint);




<div class="se-preview-section-delimiter"></div>

這裏寫圖片描述


public void drawPoints(float[] pts, int offset, int count, Paint paint)

參數:
float[] pts: 點的集合,從第一個開始兩兩一組爲一個點,元素個數必須是偶數,形如:pts = {x1, y1, x2, y2, x3, y3, ……};
int offset: 點的集合 pts 數組中省去不繪製的數的個數,兩個數爲一個點;可以爲奇數,但繪製的點會位置不正確;
count: 參與繪製的 pts 數組中數的個數,兩個數爲一個點,必需爲偶數;

Paint paint = new Paint();
paint.setColor(Color.BLUE);
paint.setStrokeWidth(30);
float [] points = new float[]{20, 20, 100, 100, 250, 250, 450, 450};
canvas.drawPoints(points, 2, 4, paint);




<div class="se-preview-section-delimiter"></div>

這裏寫圖片描述


如果將 offset 改爲 1,即:

Paint paint = new Paint();
paint.setColor(Color.BLUE);
paint.setStrokeWidth(30);
float [] points = new float[]{20, 20, 100, 100, 250, 250, 450, 450};
canvas.drawPoints(points, 1, 4, paint);




<div class="se-preview-section-delimiter"></div>

效果如下:
這裏寫圖片描述


2. 畫直線 drawLine()

(1) 一條直線:

public void drawLine(float startX, float startY, float stopX, float stopY, Paint paint)

參數:
float startX : 起點橫座標;
float startY : 起點縱座標;
float stopX : 終點橫座標;
float stopY : 終點縱座標;
Paint paint : 畫筆;

Paint paint = new Paint();
paint.setColor(Color.GREEN);
paint.setStrokeWidth(20);
canvas.drawLine(30, 30, 150, 150, paint);




<div class="se-preview-section-delimiter"></div>

這裏寫圖片描述

(1) 多條直線:

public void drawLines(float[] pts, Paint paint)

參數:
float[] pts: 點的集合,從第一個開始兩兩一組爲一個點,元素個數必須是偶數,形如:pts = {x1, y1, x2, y2, x3, y3, ……};
Paint paint : 畫筆;

Paint paint = new Paint();
paint.setColor(Color.GREEN);
paint.setStrokeWidth(20);
float[] points = new float[]{30, 30, 150, 150, 250, 250, 400, 400};
canvas.drawLines(points, paint);




<div class="se-preview-section-delimiter"></div>

這裏寫圖片描述


public void drawLines(float[] pts, int offset, int count, Paint paint)

參數:
float[] pts: 點的集合,從第一個開始兩兩一組爲一個點,元素個數必須是偶數,形如:pts = {x1, y1, x2, y2, x3, y3, ……};
int offset: 點的集合 pts 數組中省去不繪製的數的個數,兩個數爲一個點;可以爲奇數,但繪製的點會位置不正確;
count: 參與繪製的 pts 數組中數的個數,兩個數爲一個點,必需爲偶數;
Paint paint : 畫筆;

Paint paint = new Paint();
paint.setColor(Color.GREEN);
paint.setStrokeWidth(20);
float[] points = new float[]{30, 30, 150, 150, 250, 250, 400, 400};
canvas.drawLines(points, paint);




<div class="se-preview-section-delimiter"></div>

這裏寫圖片描述


3. 畫矩形 drawRect

public void drawRect(RectF rect, Paint paint)

參數:
RectF rect 矩形區域
Paint paint : 畫筆;

Paint paint = new Paint();
paint.setColor(Color.GREEN);
paint.setStrokeWidth(20);
paint.setStyle(Paint.Style.STROKE);

RectF rectF = new RectF();
rectF.left = 50;
rectF.top = 50;
rectF.right = 400;
rectF.bottom = 200;

canvas.drawRect(rectF, paint);




<div class="se-preview-section-delimiter"></div>

這裏寫圖片描述

4. 畫橢圓 drawOval

public void drawRect(RectF rect, Paint paint)

參數:
RectF rect 矩形區域, 橢圓的繪製是在一個矩形區域完成的
Paint paint : 畫筆;

public void drawOval(float left, float top, float right, float bottom, Paint paint)

Paint paint = new Paint(); //橢圓畫筆
paint.setColor(Color.GREEN);
paint.setStrokeWidth(5);
paint.setStyle(Paint.Style.STROKE);

Paint paint1 = new Paint(); //橢圓所在矩形區域畫筆
paint1.setColor(Color.RED);
paint1.setStrokeWidth(5);
paint1.setStyle(Paint.Style.STROKE);

RectF rectF = new RectF();
rectF.left = 50;
rectF.top = 50;
rectF.right = 400;
rectF.bottom = 200;

canvas.drawRect(rectF, paint1);//畫出矩形,爲了更加形象顯示橢圓的繪製規則
canvas.drawOval(rectF, paint);//繪製橢圓

這裏寫圖片描述


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章