开篇之言:
绵绵往里,柔摘梅花泣。云碎梅花无晓意,阑临场空悲喜。
清苦人生如茶、道道尝尽酥麻。漠然红尘落尽,故应无忆梅花。 —— 吴缘
上一篇主旨是介绍Paint的所有方法,编程可以说就像打仗,先得知其底线晓之长短,我们才能对其为所欲为,不过贪多嚼不烂,在学基础的同学切不可一头扎了进去,不然是要吃亏的。本篇呢,主要跟大家讲述Paint几个基础方法的用法,已有基础的同学可以跳过此篇。以后文章的风格大体也是这样,先问候相关类的“全家”,再欺负最底层的“家丁”,然后喧宾夺主,嘿嘿嘿。
setStyle(Style style)
上一篇已经讲过这个方法的意义及用法,这里我们就直接贴代码看效果,各位同学再依葫芦画瓢,举一反三去亲手试试,就能掌握这些方法了,这里只说一遍,以下的方法也是如此。
传递的参数只有三种选择,Paint.Style.FILL,Paint.Style.STROKE,Paint.Style.FILL_AND_STROKE,在上一篇也很详细的讲解了这三个的区别,所以这里只展示前面两个的用法和区别,注意调用方法的位置是在onDraw()方法里,下面的代码也都如此,因此后面我只贴onDraw()方法中的代码。如果不用此方法,画笔默认选择Paint.Style.FILL。
整体代码:
@Override
protected void onDraw(Canvas canvas) {//这里的canvas就是画布,也就是我们前面想象里的纸张
super.onDraw(canvas);
mPiant.setStyle(Paint.Style.FILL);//使画笔填充绘满
// mPiant.setStyle(Paint.Style.STROKE);//使画笔描边,绘制线条
//起点左上角(20,30) 终点右下角(40,50)
canvas.drawRect(20,30,40,50,mPiant);//draw 绘制 Rect 矩形
}
这里问题来了,如果将mPaint.setStyle(Paint.Style.STROKE)此行取消注释,并运行代码,呈现出来的效果是上图中的左边呢还是右边?在这里要联想现实生活,难道一只涂料笔只能蘸取一种颜色吗?又或者说,一只笔它只能涂满不能描边吗?答案显然不是,我既可以用红色也可以用黄色,我既可以涂满我也能描边,这完全取决于我想用什么,至于最后的效果是什么,就看我最后选择的是哪种颜色或哪种风格,排在最后的才是绘制出来的。这也就是“覆盖”。
setColor(int color)
画笔默认颜色为黑色。
setAntiAlias()、setDither()
这两个方法在绘制图片的时候经常用到,在绘制几何图形时无需使用,图形示例在上一篇也有,所以这里不再赘述。
setStrokeWidth(float width)
大家肯定用过2B铅笔吧,那种笔尖是长方形的,在填写选择题答案时只要一笔划过就可以画满了,极其省事。在这里我将使用此方法,并传入100的值,就相当于将正常2B铅笔的笔尖放大100倍,然后再画一个边长为200的正方形,这里大家可以想象一下画出来的是什么样子。下面贴出代码。
这里值得注意的是,因为画笔默认是填充画满的,而此方法又体现在笔尖的作用上,也就是描边画线条,所以我们必须在用此方法的同时也要用到setStyle(Paint.Style.STROKE)方法,可以在前也可以在后。
mPiant.setStyle(Paint.Style.STROKE);
mPiant.setStrokeWidth(100);
//起点左上角(20,30) 终点右下角(220,230)
canvas.drawRect(20,30,220,230,mPiant);//draw 绘制 Rect 矩形
setTextSize(float textSize)
直接上代码。
@Override
protected void onDraw(Canvas canvas) {//这里的canvas就是画布,也就是我们前面想象里的纸张
super.onDraw(canvas);
mPiant.setTextSize(50);
canvas.drawText("客舟于此,却不愿随波逐流。",20,20,mPiant);
//第一个参数是绘制的文本内容 第二个参数是绘制的x点 第三个参数是绘制的y点 第四个参数是画笔
}
效果图,是不是很惊奇。
这里显示出来的字为何有一半似乎卡在上面了?
问题的原因就出自于安卓的绘制起点,除了绘制文字外,安卓所有的绘制起点都是在左上角的位置,这也就是我为什么在第一篇文章中强调让大家设想左上角为起点,而不是左下角或右上角,先入为主的观念必然要先立起。在这里就可以跟同学们解释了。解释:安卓就是这么规定的!嘿嘿,是不是很强势的解释。
在绘制文字的规定上,安卓将绘制的起点放在左下角,那么在代码中,我们设置了文字大小为50,而绘制的起点在(20,20),那么势必有30高度的内容就无法正常显示,所以才有我们看到的运行效果。如果想要正常的看到所有内容,只需要将绘制的起点设为(20,50)即可。这里再次强调,是从左下角向右向上绘制,到右上角结束。
这里Paint的几个基础方法已经搞定,下面的文章将会把画布canvas的所有方法贴出。
最后给学习基础的同学布置一个题目,题目代码在下一章最后给出,先做再看哦。