画图 left top分别是离左边 上边的距离
28. drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint)第一个Rect是图片的裁剪区域
第二个Rect是屏幕的裁剪区域
也就是把预定的图片区域显示在预定的屏幕区域上面,这是一种绘制图片的方式,但也可以实通过这个方式实现缩放效果
29. drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint) Rect src: 是对图片进行裁截,若是空null则显示整个图片RectF dst:是图片在Canvas画布中显示的区域, 大于src则把src的裁截区放大, 小于src则把src的裁截区缩小。
说明: clipXXX()方法族 说明:在当前的画图区域裁剪(clip)出一个新的画图区域,这个画图区域就是canvas对象的当前画图区域了。 例如:clipRect(new Rect()),那么该矩形区域就是canvas的当前画图区域了。 public int save() 说明:保存已经由canvas绘画出来的东西,在save()和restore()方法之间的操作不对它们造成影响,例如旋转(roate)等。 而且对canvas的操作(roate和translate)都是临时的,restore()后不再存在。 public voidrestore() 说明:复原sava()方法之前保存的东西资源。 drawXXX()方法族 说明:以一定的坐标值在当前画图区域画图。 注意:图层会叠加,即后面绘画的图层会覆盖前面绘画的图层。 所有画的坐标都是基于原点来画的,原点可以通过translate来移动 二、Paint的用法 1.paint.setStyle(Paint.Style.STROKE); 设置空心的style 2.Paint每用一次 可以再重新设置颜色 重新设置属性 3. paint.setStrokeWidth((float) 5.0); 画笔的粗细 4.paint.setAntiAlias(true); 用来消除锯齿 使得线条更加的圆滑 三、path的用法 1.用来设置画笔的路径,直接就是写死的路径 path.lineto(x,y);x是X轴的坐标 Y 是Y轴坐标 比如画一个正方形 可以先moveTo(x,y)到一个坐标点开始 path.lineTo(100,200) path.lineTo(100,500) path.lineTo(400,500) path.lineTo(400,200) 然后将path路径传给canvas就可以画出来 比如:canvas.drawPath(path,paint); 四、PorterDuff.Mode的用法 举例博客:http://blog.csdn.net/q445697127/article/details/7867529 extends Enum<E extends Enum<E>> 是枚举的类,主要是存放各种不同的样式 主要用于多层布局的时候,显示那层布局的问题。 1.PorterDuff.Mode.CLEAR 所绘制不会提交到画布上。 2.PorterDuff.Mode.SRC 显示上层绘制图片 3.PorterDuff.Mode.DST 显示下层绘制图片 4.PorterDuff.Mode.SRC_OVER 正常绘制显示,上下层绘制叠盖。 5.PorterDuff.Mode.DST_OVER 上下层都显示。下层居上显示。 6.PorterDuff.Mode.SRC_IN 取两层绘制交集。显示上层。 7.PorterDuff.Mode.DST_IN 取两层绘制交集。显示下层。 8.PorterDuff.Mode.SRC_OUT 取上层绘制非交集部分。 9.PorterDuff.Mode.DST_OUT 取下层绘制非交集部分。 10.PorterDuff.Mode.SRC_ATOP 取下层非交集部分与上层交集部分 11.PorterDuff.Mode.DST_ATOP 取上层非交集部分与下层交集部分 12.PorterDuff.Mode.XOR 取两层绘制非交集。两层绘制非交集。 13.PorterDuff.Mode.DARKEN 上下层都显示。变暗 14.PorterDuff.Mode.LIGHTEN 上下层都显示。变量 15.PorterDuff.Mode.MULTIPLY 取两层绘制交集 16.PorterDuff.Mode.SCREEN 上下层都显示。 五、Rectf的用法 RectF 这个类包含一个矩形的四个单精度浮点坐标。矩形通过上下左右4个边的坐标来表示一个矩形。 这些坐标值属性可以被直接访问,用width()和 height()方法可以获取矩形的宽和高。 注意:大多数方法不会检查这些坐标分类是否错误(也就是left<=right和top<=bottom). RectF一共有四个构造方法: 1.RectF()构造一个无参的矩形 2.RectF(float left,float top,float right,float bottom)构造一个指定了4个参数的矩形 3.RectF(Rect F r)根据指定的RectF对象来构造一个RectF对象(对象的左边坐标不变) 4.RectF(Rect r)根据给定的Rect对象来构造一个RectF对象 5.RectF提供了很多方法,下面介绍几个方法: Public Boolean contain(RectF r);判断一个矩形是否在此矩形内,如果在这个矩形内或者和这个矩形等价则返回true,同样类似的方法还有public Boolean contain(float left,float top,float right,float bottom)和public Boolean contain(float x,float y)。 Public void union(float x,float y)更新这个矩形,使它包含矩形自己和(x,y)这个点。 RectF类提供的方法都比较简单,容易理解,再此就不再一一赘述 Android.graphics.Rect类,这个类同android.graphics.RectF很相似,不同的地方是Rect类的坐标是用整形表示的,而RectF的坐标是用单精度浮点型表示的。