你见过这样比喻Paint,Canvas,Path这三个类的吗?

2016-05-08 19:11 评论 0 条

一.摘要

Paint,Canvas,Path这三个类被使用在自定义控件中,Paint被比喻成画笔,Canvas被比喻成画纸,Path被比喻成画尺,我们就是一个小学生,特喜欢在画画课堂上捣鼓,使用不同颜色的画笔在洁白的画纸上画出各种图像:有直线,曲线,三角形,圆形,矩形,甚至各种人物,动物,景物等。
wallpaper-beautiful-girl-hd

二.Paint

画笔不止有一只“铅笔”,而是12只不同颜色的“彩笔”,如果想要画一个红色的气球,我们选择红色的“彩笔”,设置Paint属性如下:

  1. Paint paintBalloon=new Paint();  
  2. paintBalloon.setColor(Color.RED);  

如果想要在红色气球的之间“画”多几个文字,文字的颜色为白色,文字的大小为20,文字的类型(字体,粗细,倾斜),文字的边界为平滑,选择另外一只画笔,设置Paint属性如下:

  1. Paint paintFont=new Paint();  
  2. paintFont.setColor(Color.WHITE);  
  3. paintFont.setTextSize(20);  
  4. paintFont.setTypeface(Typeface.SERIF);  
  5. paintFont.setTypeface(Typeface.DEFAULT_BOLD);  
  6. paintFont.setAntiAlias(true);  

三.Canvas

选好了画笔,可以开始取出一张“画纸”,然后再画纸上面画出红色的气球和白色的文字,创建一个Canvas对象,然后drawCircle()方法,代码如下:

  1. canvas.drawCircle(300,300,100,paintBalloon);  

第一个参数:圆心点的X轴坐标

第二个参数:圆心点的Y轴坐标

第三个参数:圆的半径

第四个参数:选择的Paint画笔

效果如下图:
001-paint_balloon

在气球的之间,同一张画纸,即同一个canvas对象,“画”上几个文字,具体代码如下:

  1. canvas.drawText("亲爱的",250,300,paintFont);  

第一个参数:画的文字

第二个参数:文字开始的X轴坐标

第三个参数:文字开始的Y轴坐标

效果如下图:
002-paint_font

在气球的下面,同一张画纸,即同一个canvas对象,“画”上一根线,具体代码如下:

  1. canvas.drawLine(300,400,300,800,paintLine);//第三只画笔  

第一个参数:线起点的X轴坐标

第二个参数:线起点的Y轴坐标

第三个参数:线终点的X轴坐标

第四个参数:线终点的Y轴坐标

第五个参数:画线的画笔

效果如下图:
003-paint_line

四.Path

Path是画尺,在气球的外边添加一圈粉色的边框,看起来更有立体感,那就要借助“三角板”的圆型模型,然后套在画纸上绘画,具体代码如下:

  1. Path pathCircle=new Path();  
  2. pathCircle.addCircle(300,300,120,Direction.CW);  
  1. Paint paintCircle=new Paint();  
  2.       paintCircle.setColor(Color.argb(80,255,192,203));  
  3.       paintCircle.setAntiAlias(true);  
  1. canvas.drawPath(pathCircle,paintCircle);//第四支画笔  

最终效果:
004-paint_bound

五.画笔,画纸,画尺Android开发应用

现在自定义MessageImageView控件,控件的特点设置图片src,然后裁剪为圆形图像,在圆形头像的右上角显示消息的数量,类似手机QQ消息提示红点效果,效果如下图:
message-imageview-demo

当前文章价值2.04元,扫一扫支付后添加微信提供帮助!(如不能解决您的问题,可以申请退款)

你可能感兴趣的文章

来源:每日教程每日一例,深入学习实用技术教程,关注公众号TeachCourse
转载请注明出处: https://www.teachcourse.cn/1731.html ,谢谢支持!

资源分享

Android Debug Bridge之Shell命令 Android Debug Bridge之Shel
wordpress异常:Uncaught Error Call to undefined function get_magic_quotes_gpc() wordpress异常:Uncaught Erro
浅谈dt.jar、tools.jar和rt.jar 浅谈dt.jar、tools.jar和rt.jar
Android开发之ListView添加多种布局效果演示 Android开发之ListView添加多