1. 程式人生 > >自定義View(1)

自定義View(1)

點操作:moveTo和lineTo和rLinneTo的理解
1、lineTo
用於進行直線繪製。起點預設為座標原點(左上),如果有path的存在,則是繪製的最後點為基準,座標點對應的(0,0)到lineTo(x,y)的偏移量

比如

/**
 * 線操作
 * lineTo的偏移量相對於原點
 * rLineTo的偏移量相對於path的最後終點
 */
void getLine() {
    //設定Path
    //螢幕左上角(0,0)到(20,40)畫一條直線
    path.lineTo(20, 40);
    //(20, 40)到(40,60)畫一條直線
    path.lineTo(40, 60);
    //以(40,60)為起始點(0,0)偏移量為(40,60)畫一條直線,
    //其終點座標實際在螢幕的位置為(800,1200)
    path.rLineTo(40, 60);
}

歸根結底,不同點為偏移量如何計算,一個為(0,0)開始計算,另一個根據path終點作為 起點計算,起點預設為座標原點(左上),如果有path的存在,則起始點為最後繪製的終點,lineTo和rLineTo只是偏移量相對於原點還是相對於path的終點

2.點操作
是用來移動畫筆的

/**
 * 點操作
 * moveTo將座標系原點從(0,0)移動到(x,y),但是偏移量還是相對於(0,0)
 * 而rMoveTo則是相對於path的終點移動,偏移量同理不會改變上面程式碼中,開啟註釋的path.rMoveTo(0, 10),
 * 意為下一步操作起點位置由(40,40)變為(40+0,40+10)即為(40,50)
 */
void getDot() {
    //將座標系原點從(0,0)移動到(10,10)
    path.moveTo(10, 10);
    //畫從(10,10)到(40,40)之間的直線
    path.lineTo(40, 40);
    //path.rMoveTo(0, 10); //暫時註釋
    path.lineTo(40, 80);
}

效果如圖: