8.2.2 drawLine方法:绘制直线
【功能说明】该方法用于在画布上绘制直线,通过指定直线的两个端点坐标来绘制。该方法只能绘制单条直线;如果需要同时绘制多条直线,则可以使用drawLines方法。
【基本语法】public void drawLine (float startX, float startY, float stopX, float stopY, Paint paint)
参数说明
startX:起始端点的X坐标。
startY:起始端点的Y坐标。
stopX:终止端点的X坐标。
stopY:终止端点的Y坐标。
paint:绘制直线所使用的画笔。
【实例演示】下面通过代码来演示如何在画布上绘制直线。
1. protected void onDraw(Canvas canvas) {
2. // TODO Auto-generated method stub
3. super.onDraw(canvas);
4. paint.setColor(Color.BLACK); //设置画笔颜色
5. canvas.drawColor(Color.WHITE); //设置背景颜色
6. paint.setStrokeWidth((float) 1.0); //设置线宽
7. canvas.drawLine(50, 50, 450, 50, paint); //绘制直线
8. paint.setStrokeWidth((float) 5.0); //设置线宽
9. canvas.drawLine(50, 150, 450, 150, paint); //绘制直线
10. paint.setStrokeWidth((float) 10.0); //设置线宽
11. canvas.drawLine(50, 250, 450, 250, paint); //绘制直线
12. paint.setStrokeWidth((float) 15.0); //设置线宽
13. canvas.drawLine(50, 350, 450, 350, paint); //绘制直线
14. paint.setStrokeWidth((float) 20.0); //设置线宽
15. canvas.drawLine(50, 450, 450, 450, paint); //绘制直线
16. }
在这段代码中,首先为画笔设置了颜色,然后将画布的背景设置为白色,接着绘制了4条直线,每条直线的线宽都不一样。读者运行这段代码,可以在手机屏幕上看到如图8.12所示的显示效果。
图8.11 设置黄色背景 |
图8.12 绘制直线 |
8.2.3 drawLines方法:绘制多条直线
【功能说明】该方法用于在画布上绘制多条直线,通过指定直线的端点坐标数组来绘制。该方法可以绘制多条直线,非常灵活。
【基本语法】public void drawLines (float[] pts, Paint paint)
参数说明
pts:绘制直线的端点数组,每条直线占用4个数据。
paint:绘制直线所使用的画笔。
【实例演示】下面通过代码来演示如何在画布上绘制多条直线。
1. protected void onDraw(Canvas canvas) {
2. // TODO Auto-generated method stub
3. super.onDraw(canvas);
4. paint.setColor(Color.BLACK); //设置画笔颜色
5. float[] pts={50,50,400,50,
6. 400,50,400,600,
7. 400,600,50,600,
8. 60,600,50,50}; //数据
9. canvas.drawColor(Color.WHITE); //白色背景
10. paint.setStrokeWidth((float) 5.0); //线宽
11. canvas.drawLines(pts, paint); //绘制多条直线
12. }
在这段代码中,首先设置画笔的颜色,然后初始化一个数组代表绘制直线的各个端点,这里每一行4个数组,前两个为起始端点,后两个为终止端点,这里共绘制了4条直线,构成一个封闭的图形。读者运行这段代码,可以在手机屏幕上看到如图8.13所示的显示效果。
8.2.4 drawLines方法:有选择地绘制多条直线
【功能说明】该方法用于在画布上绘制多条直线,通过指定直线的端点坐标数组来绘制。该方法可以绘制多条直线,同时也可以指定哪些线段绘制,而哪些线段不绘制,更加灵活。
【基本语法】public void drawLines (float[] pts, int offset, int count, Paint paint)
参数说明
pts:绘制直线的端点数组,每条直线占用4个数据。
offset:跳过的数据个数,这些数据将不参与绘制过程。
count:实际参与绘制的数据个数。
paint:绘制直线所使用的画笔。
【实例演示】下面通过代码来演示如何在画布上有选择地绘制直线。
1. protected void onDraw(Canvas canvas) {
2. // TODO Auto-generated method stub
3. super.onDraw(canvas);
4. paint.setColor(Color.BLACK); //设置画笔颜色
5. float[] pts={50,50,400,50,
6. 400,50,400,600,
7. 400,600,50,600,
8. 60,600,50,50}; //数据
9. canvas.drawColor(Color.WHITE); //白色背景
10. paint.setStrokeWidth((float) 5.0); //线宽
11. canvas.drawLines(pts,4,12,paint); //有选择地绘制直线
12. }
在这段代码中,首先设置画笔的颜色,然后初始化一个数组代表绘制直线的各个端点。接着,设置画布的背景为白色,在绘制直线时调用drawLines方法,指定跳过前4个数据,取出12个数据绘制直线。读者运行这段代码,可以在手机屏幕上看到如图8.14所示的显示效果。读者可以看到这里绘制了其中的3条直线。
图8.13 绘制多条直线 |
图8.14 有选择地绘制直线 |
android绘图与动画效果参考:http://book.51cto.com/art/201204/328247.htm