2022年3月13日 星期日

android studio:canvas

Canvas為畫布,可以透過設定paint畫筆在上作畫。

要創建一個canvas ,自定義view時, 將要畫的圖寫在onDraw、dispatchDraw方法中,如下:

public class Myview extends View {

public Myview(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//在此方法中繪圖
Paint paint = new Paint(); //新建一個畫筆
paint.setStrokeWidth(3); //設定畫筆的寬度為3
canvas.drawLine(50, 50, 200, 200, paint); //drawLine為繪製一條線

}
}


另在xml 引入myveiw的視圖,這樣可以在畫面中出現了。

<com.example.canvas2.Myview
android:id="@+id/myview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/button" />


如果需要調整可以用findViewById(R.id.myview)於程式中,進行調整。

以下為canvas 畫各種形狀的範例及參數說明

canvas.drawLine(50, 50, 200, 200, paint); //drawLine為繪製一條線 參數為(第一點x軸,第一點y軸,第二點x軸,第二點y軸,畫筆)
paint.setTextSize(50); //文字大小
canvas.drawText("你是來搞笑的麼!!!", 300, 300, paint); //打字 參數為(x軸,y軸)
canvas.drawCircle(500,500,200,paint); //畫圓 參數為(x軸,y軸,半徑長,畫筆)
//canvas.drawRect(600,600,800,800,paint); //方形
canvas.drawOval(200,400,600,900,paint); //繪製橢圓

//繪製路徑
Path path = new Path(); //新建路徑
path.moveTo(200f, 200f); //第一點X、Y軸
path.lineTo(400f, 200f); //第二點X、Y軸
path.lineTo(400f, 400f); //第三點X、Y軸
path.close();
canvas.drawPath(path, paint); //繪製路徑

canvas.drawPoint(800,800,paint); //繪製點 參數為(x軸,y軸)
canvas.drawRoundRect(900,900,1200,1200,20,20,paint); //圓角矩形

paint.setStyle(Paint.Style.FILL); // 畫筆為填充模式
//參數說明drawArc(float left, float top, float right, float bottom, 起始角度, 繪製範圍, 是否連結圓心, 畫筆內容)
canvas.drawArc(100, 100, 700, 400, -110, 100, true, paint); // 繪製扇形圖形
canvas.drawArc(100, 100, 700, 400, 20, 140, false, paint); // 繪制弧形圖形
paint.setStyle(Paint.Style.STROKE); // 畫筆為線段
canvas.drawArc(100, 100, 700, 400, 180, 60, false, paint); // 繪製不封口的弧形


參考網址:

https://www.twblogs.net/a/5b87691a2b71775d1cd6fd0d?lang=zh-cn

沒有留言:

張貼留言