一  Canvas的用法   博客:http://blog.taorenjia.com/?p=237
 
 1.drawCircle(float cx, float cy, float radius, Paint paint) cx 为宽  cy为高  radius 为半径
 
 2.画的都是一层一层的   每画一个 就会加在另一个的上面 类似于层级的关系
 
 3.drawColor (int color)   画颜色  全部画布的颜色   
 
 4.drawText (String text, float x, float y, Paint paint)  x 字的开始X坐标  y 开始的Y坐标   字体大小是在Paint中控制的
 
 
 5.drawText (CharSequence text,    int start,      int end,       float x, float y, Paint paint) 
                                  字符开始位置   字符结束位置   同上
 
 6.drawText(char[] text, int index, int count,            float x, float y, Paint paint) 
               字符数组   下表       从index下表往后几个    x 字的开始X坐标  y 开始的Y坐标
 
 
7.drawTextOnPath (char[] text, int index, int count, Path path, float hOffset, float vOffset, Paint paint) 
 在路径上写字,通过Path来设置直接的路径参数   
hOffset   距离路径开始的距离
vOffset   离路径的上下高度,
 
8. drawTextOnPath (char[] text, int index, int count, Path path, float hOffset, float vOffset, Paint paint)
  同上  
 
9.drawPosText (String text, float[] pos, Paint paint) 
    按照既定点 绘制文本内容      float数组就是点的坐标  比如:
    new float[]{    
            10,10, //第一个字母在坐标10,10    
            20,20, //第二个字母在坐标20,20    
            30,30 //....    
           }
10.drawLine(float startX, float startY, float stopX, float stopY, Paint paint) 
   画线         开始坐标                        结束的坐标
 
11.drawLines (float[] pts, Paint paint) 
   画多条线用的   float数组中存放的是坐标点  pts:绘制直线的端点数组,每条直线占用4个数据。
 
12.drawLines (float[] pts, int offset, int count, Paint paint) 
   同上     offset 从数组中选取开始取数的下标    count 从下标开始往后取多少个数据  一般为4的倍数 因为  每条直线占用4个数据
 
13.draw中的坐标是基于自身的坐标。
 
14.drawPaint(Paint paint) 
 
15.canvas.drawOval(rectf , paint); 椭圆  通过rectf类来给椭圆定义。
 
 
16.drawPath(Path path, Paint paint) 通过Path定义的路径,来画  画出来的都是直线  通过两点定义一条直线
 
 
17.drawPoint(x,y, paint); 画 点   x,y是用来定义坐标的
 
 
18.drawPoints(float[] pts, Paint paint) ;  画多个点  float数组存放点的坐标  两个为一组定义一个点   如果是奇数  就会舍弃一个数据
 
19.drawPoints(float[] pts, int offset, int count, Paint paint)   画多个点  通过从float数组中获取数据 切记:数据角标越界
 
20.drawRGB(a,b,c)  通过三个参数来确定色值   是针对跟个画布  类似于drawColor()方法
 
21.drawRect(float left, float top, float right, float bottom, Paint paint) 画矩形用的 
 
22.drawRoundRect(RectF rect,float rx,float ry,Paint paint)
作用:绘制圆角矩形
第一个参数:矩形实例  用来定义矩形的位置  以及大小 
第二个参数:圆角X轴的半径
第三个参数:圆角Y轴的半径
第四个参数:画笔实例
 
 
23.drawArc(RectF oval,float startAngle,float sweepAngle,boolean useCenter,Paint paint)
作用:绘制弧形(扇形)
第一个参数:矩形实例    说的是上下边距的像素值
第二个参数:弧形的起始角度
第三个参数:弧形的终止角度
第四个参数:是否绘制中心点;如果为真,起始点与终止点都会分别连接中心点,从而形成封闭图形;
            如果为假,则起始点直接连到终止点,从而形成封闭图形。
第五个参数:画笔实例
 
24.rotate(float a)使得画布旋转,float是旋转的度数   )这个方法的旋转中心是坐标的原点,在这个例子里就是屏幕的左上角了
    博客:http://blog.csdn.net/gf771115/article/details/31438075
 
25.translate()作用就是移动原点,默认的原点(0,0)是在屏幕左上角的,你可以通过translate(x,y)把点(x,y)作为原点.
 
26.    drawBitmap(Bitmap bitmap, Matrix matrix, Paint paint)  
     画图的   Matrix来设置位置,形态等
27.drawBitmap(Bitmap bitmap, float left, float top, Paint paint)

画图  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的坐标是用单精度浮点型表示的。这里大家一定要注意 啊。 

绘图之Canvas学习的更多相关文章

  1. canvas学习之API整理笔记(二)

    前面我整理过一篇文章canvas学习之API整理笔记(一),从这篇文章我们已经可以基本了解到常用绘图的API.简单的变换和动画.而本篇文章的主要内容包括高级动画.像素操作.性能优化等知识点,讲解每个知 ...

  2. canvas学习总结六:绘制矩形

    在第三章中(canvas学习总结三:绘制路径-线段)我们提高Canvas绘图环境中有些属于立即绘制图形方法,有些绘图方法是基于路径的. 立即绘制图形方法仅有两个strokeRect(),fillRec ...

  3. canvas学习(一):线条,图像变换和状态保存

    canvas学习(一):线条,图像变换和状态保存 一:绘制一条线段: var canvas = document.getElementById('canvas') var ctx = canvas.g ...

  4. Canvas学习:封装Canvas绘制基本图形API

    Canvas学习:封装Canvas绘制基本图形API Canvas Canvas学习   从前面的文章中我们了解到,通过Canvas中的CanvasRenderingContext2D对象中的属性和方 ...

  5. canvas学习(一)

    Canvas 学习之路 (一) canvas 是H5 里面神一样的东西,使得只是通过html和js就能做出非常棒的游戏和画面. 因为对前端无限的爱好,更加对canvas充满好奇,将我学习canvas的 ...

  6. canvas学习和面向对象(二)

    Canvas 学习(二) 上一篇Canvas 学习(一)中我是用canvas绘制了一些基本和组合的图形. 现在开始绘制图片和动画帧,以及面向对象的升级版本. 还是一样,看代码,所有的代码都托管在git ...

  7. 绘图工具graphviz学习使用

    画图工具: http://www.tuicool.com/articles/r2iAfa http://www.tuicool.com/articles/RjQfey 绘图工具graphviz学习使用 ...

  8. canvas学习笔记、小函数整理

    http://bbs.csdn.net/topics/391493648 canvas实例分享 2016-3-16 http://bbs.csdn.net/topics/390582151 html5 ...

  9. canvas学习(三):文字渲染

    一.绘制基本的文字: var canvas = document.getElementById("myCanvas") var ctx = canvas.getContext('2 ...

随机推荐

  1. 洛谷 P1028 数的计算

    嗯... 首先这道题想到的就是递推.... 但是递推失败 (不知道自己是怎么想的 然后又想打一个暴力,但是数的最高位太难存储了,所以又放弃了(并且好像这个暴力大约500就会炸... 然后看了题解,才发 ...

  2. clojure with postgres

    主要关注访问pg.不关心其他db 1 clojure.java.jdbc https://github.com/clojure/java.jdbc http://clojure-doc.org/art ...

  3. POJ3469Dual Core CPU

    题意:给你n个模块,每个模块在A核花费为ai,在B核跑花费为bi,然后由m个任务(ai,bi,wi),表示如果ai,bi不在同一个核上跑,额外的花费为wi,求最小的花费. 分析: 用最小的费用将对象划 ...

  4. 工具类_IsNull

    import java.util.List; /** * 判断是否为空 2015-08-17 *  * @author lipanquan *  */public final class IsNull ...

  5. Jenkins自动化CI CD流水线之2--用户权限管理

    一. 背景 针对开发.运维.测试针对不同角色进行不同权限划分, 基于插件: Role-based Authorization Strategy来实现. 一. 安装 安装该插件: 系统管理->管理 ...

  6. Go语言基础之2--字符串详解

    一.字符串原理解析 1. 字符串底层就是一个byte数组,所以可以和[]byte类型互相转换:(字符串可以存文本,也可以存二进制,因为其本来就是一个字节流) 2.  字符串之中的字符是不能修改的,那怎 ...

  7. HttpClient,Socket,URL知识

    java中: tip/ip  , udp  传输协议 网络编程有三大类:Socket,URL,datagram HTTP协议是建立在TCP协议之上的一种应用. 一:HttpClient HttpCli ...

  8. esper(4-1)-简单context

    1.创建context语法 create context context_name partition [by] event_property [and event_property [and ... ...

  9. gitlab 邮件配置

    vim /etc/gitlab/gitlab.rb gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "sm ...

  10. ECharts基本设置

    theme = { // 全图默认背景 // backgroundColor: ‘rgba(0,0,0,0)’, // 默认色板 color: ['#ff7f50','#87cefa','#da70d ...