自定义View(1)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/taowuhua0505/article/details/82786626

点操作: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);
}

效果如图:


 

猜你喜欢

转载自blog.csdn.net/taowuhua0505/article/details/82786626