Android Paint Canvar 畫幾何圖形

來源:互聯網
上載者:User

Android Paint Canvar 畫幾何圖形

最近在研究自訂控制項,遇到了幾何圖形的繪製,這裡就貼出來常見的例子:

①首先在主Activity中代碼:

package com.example.mycustomwidget;


import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.os.Bundle;
import android.util.AttributeSet;
import android.view.View;


public class MainActivity extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MyCustomView myView = new MyCustomView(MainActivity.this);
setContentView(myView);
}
}

 

 

②MyCustomView中代碼:

package com.example.mycustomwidget;


import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;


public class MyCustomView extends View{


public MyCustomView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}




public MyCustomView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
// TODO Auto-generated constructor stub
}






public MyCustomView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}






@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
//設定畫布的顏色
canvas.drawColor(Color.BLUE);

//-----------------------------①畫一個空心正方形--------------------------------
//建立一個畫筆
Paint mPaint = new Paint();
//設定畫筆為空白心
mPaint.setStyle(Paint.Style.STROKE);
//設定畫顏色
mPaint.setColor(Color.RED);
//設定畫筆寬度
mPaint.setStrokeWidth(10);
/**
* 建立一個矩形
* 第一個參數:矩形左頂點的X軸座標
* 第二個參數:矩形左頂點的Y軸座標
* 第三個參數:矩形右下角頂點的X軸座標
* 第四個參數:矩形右下角頂點的Y軸座標
*/
Rect mRect = new Rect(10, 10, 50, 50);
//開始畫矩形了
canvas.drawRect(mRect, mPaint);

//-----------------------------②畫一個實心正方形--------------------------------
//設定畫筆為實心
mPaint.setStyle(Paint.Style.FILL);
//重新設定矩形的大小
mRect.set(60, 60, 100, 100);
canvas.drawRect(mRect, mPaint);

//-----------------------------③畫一個空心長方形--------------------------------
//設定畫筆的寬度
mPaint.setStrokeWidth(2);
mPaint.setStyle(Paint.Style.STROKE);
mRect.set(70, 110, 140, 140);
canvas.drawRect(mRect, mPaint);

//-----------------------------④畫一個空心圓--------------------------------
//消除鋸齒
mPaint.setAntiAlias(true);
/**
* 畫一個空心圓
* 第一個參數:圓心的X軸座標
* 第二個參數:圓心的Y軸座標
* 第三個參數:圓的半徑
* 第四個參數:畫筆
*/
canvas.drawCircle(180, 180, 20, mPaint);

//-----------------------------⑤畫一個實心圓--------------------------------
mPaint.setStyle(Paint.Style.FILL);
canvas.drawCircle(230, 220, 20, mPaint);

//-----------------------------⑥畫一段實心扇形--------------------------------
//先畫一個矩形
RectF oval = new RectF(240, 240, 300, 300);
/**
* 畫一段實心扇形
* 第一個參數:一個矩形,使用者定義扇形的大小
* 第二個參數:畫扇形的起始角度
* 第三個參數:要畫的角度
* 第四個參數是否包括圓形(true為包括,一般用於畫扇形;false為不包括,一般用於畫弧形)
* 第四個參數:畫筆
*/
canvas.drawArc(oval, 0, 40, true, mPaint);

//-----------------------------⑦畫一段空心扇形--------------------------------
mPaint.setStyle(Paint.Style.STROKE);
oval.set(290, 290, 350, 350);
canvas.drawArc(oval, 0, 60, true,mPaint);

//-----------------------------⑧畫一段弧--------------------------------
oval.set(360, 360, 400, 400);
canvas.drawArc(oval, 0, 70, false, mPaint);

//-----------------------------⑨畫一個內切圓--------------------------------
oval.set(360, 360, 400,400);
canvas.drawRect(oval, mPaint);
canvas.drawArc(oval, 0, 360, false, mPaint);
}


}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.