canvas基础命令

context.fillStyle="";//填充样式
context.fillRect(x,y,width,height)//画出一个矩形
context.strokeRect(x,y,width,height)//画出一个边框
context.strokeStyle=""//边框
context.lineWidth=1;//边框线宽


先定义颜色线宽再绘画图形,按顺序执行


context.clearRect(x,y,width,height)擦除指定矩形区域的颜色,使之为透明




context.beginPath();//创建路径
context.arc(x,y,radius,startAngle,endAngle,anticlockwise)//创建圆形路径
context.closePath();//关闭路径
context.fillStyle="";
context.fill();//填充图形
context.stroke();//绘制图形边框


moveTo(x,y)//将光标移到指定位置
lineTo(x,y)//从指定位置开始绘画一条直线


context.bezierCurveTo(cp1x,cp1y,cp2x,cp2y,x,y)//绘制贝济埃曲线
四个参数分别是第一个控制点的横坐标、第一个控制点的纵坐标,第二个控制点的横坐标,第二个控制点的纵坐标
context.quadraticCurveTo(in float cpx,in float cpy,in float x,in float y)
四个参数分别是控制点的横坐标、纵坐标、二次样条曲线终点的横坐标、二次样条曲线终点的纵坐标


context.createLinearGradient(xStart,yStart,xEnd,yEnd);
//创建线性渐变对象
context.addColorStop(offset,color);
//offset为偏移量,range[0,1],可添加多个addColorStop


context.createRadialGradient(xStart,yStart,radiusStart,xEnd,yEnd,radiusEnd);
六个属性分别是开始圆的坐标和半径,结束圆的坐标和半径


context.translate(x,y);//图形平移
context.scale(x,y);//图形扩大 两个参数分别是水平方向扩大倍数和垂直方向扩大倍数
context.rotate(angle);//旋转图形




context.transform(m11,m12,m21,m22,dx,dy);//修改变换矩阵
dx dy分别表示x轴和y轴的移动距离


translate(x,y)=transform(1,0,0,1)=ytansform(0,1,1,0,x,y)//1,0,0,1表示不对图形进行缩放操作
scale(x,y)=transform(x,0,0,y,0,0)=tranform(0,y,x,0,0,0)
rotate(angle)=
transform(Math.cos(angle*Math.PI/180),Math.sin(angle*Math.PI/180),-Math.sin(angle*Math.PI/180),Math.cos


(angle*Math.PI/180),0,0)//p116


context.setTranform(m11,m12,m21,m22,dx,dy);//将画布上的最左上角重置为坐标原点


图形组合
context.globalCompositeOperation=type
type的值:
source-over//在原有图形之上画
destination-in//在原有图形之下绘制图形
source-in//只显示重叠部分
destination-out//只显示不重叠的部分
source-atop//
destination-atop//
lighter//重叠部分加色
xor//重叠部分变透明
copy//只绘制新图形和重叠部分


context.shadowOffsetX
context.shadowOffsetY
context.shadowColor
context.shadowBlur//绘制阴影 一次设置所有图形都有阴影,如果要其他图形不再具有阴影效果,将shadowColor设定为rgba(0,0,0,0)


context.drawImage(image,x,y);//绘制图像,x和y为绘制该图像时的起始坐标
context.drawImage(image,x,y,w,h);//绘制图像时同时进行缩放
context.drawImage(image,sx,sy,sw,sh,dx,dy,dw,dh);//将局部区域复制到画布上的另一个位置上
image=new Image();
image.src="";//创建image对象,设定路径
image.οnlοad=function(){}边加载边绘制


图像平铺:
一、drawImage()
二、context.createPattern(image,type);
type的值:no-repeat repeat-x repeat-y repeat全方向平铺
先createPattern,再添加到fillStyle()里,最后fill


图像裁剪:
context,clip()//无参数,先创建路径图形,再执行clip()


像素处理:
context.getImageData(sx,sy,sw,sh);//获取指定区域像素,起点横纵坐标+所获区域的宽高
获得的对象是一个CanvasPixelArray对象,具有height、width、data等属性,data数组保存像素数据,内容为


[r1,g1,b1,a1,r2,g2,b2,a2...]
data.length为所取得像素的数量
context.putImageData(imagedata,dx,dy[dirtyX,dirtyY,dirtyWidth,dirtyHeight])//将对像素进行处理过的图像重新绘制在画布上


反相:
imagedata.data[i+0]=255-imagedata.data[i+0];//red
imagedata.data[i+1]=255-imagedata.data[i+0];//green
imagedata.data[i+2]=255-imagedata.data[i+0];//blue


绘制文字:
一、void fillText(text,x,y,[maxWidth]);//maxWidth为文字的最大宽度,防止溢出
二、void strokeText(text,x,y,[maxWidth]);
context.font=''//文字字体
context.textAlign='center/start/end/left/right'//文字对齐
context.textBaseline='top/hanging/middle/alphabetic/ideographic/bottom'//文字垂直对齐方式


获得文字宽度:
metrics=context.measureText(text);//返回一个TextMetrics对象,其中width属性表示text的总宽度
p134


保存绘画状态、恢复绘画状态:
save();//保存到栈中
restore();


保存文件:
canvas.toDataURL(type)
//把当前的绘画状态输出到一个data URL地址所指向的数据中的过程,dataURL就是base64位编码的URL
//把绘画状态输出到一个data URL中,然后重新装载,客户可直接把装载后的文件进行保存


动画制作:原理就是不断擦除重绘
使用到
一、绘画函数中先用clearRect方法将画布整体或局部擦除
二、使用setInterval设置动画间隔时间


eg:
var context;
var width,height;
var i;
function draw(id){
var canvas=document.getElementById(id);
if(canvas==null)
return false;
var context=canvas.getContext('2d');
width=canvas.width;
height=canvas.height;
i=0;
setInterval(rotate,100);
function rotate(){
context.clearRect(0,0,width,height);
context.fillStyle="red";
context.fillRect(i,0,20,20);
i=i+1;
}


}





























































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第1章 什么是Java程序设计语言 1 1.1 Java语言诞生背景 1 1.2 Java语言的特点 1 1.2.1 可移植性(universality) 1 1.2.2 安全性(security) 1 1.2.3 Java Virtual Machine(JVM) 2 1.2.4 面向对象的程序设计语言 2 1.2.5 线程(thread) 2 1.2.6 垃圾回收机制(garbage collection) 2 1.3 安装Java程序开发工具(JDK1.5) 2 1.3.1 安装JAVA 2 Standard Edition 1.5.0 3 1.3.2 安装开发文档及最终完成 5 1.3.3 Java开发工具 6 1.4 Java程序开发过程 7 1.5 运行第一个Java程序 7 1.6 巩固练习 8 第2章 理解对象与类 9 2.1 什么是对象 9 2.2 什么是类 9 2.3 HelloJava示例的分析 11 2.4 巩固练习 12 第3章 Java语言的基本语法 13 3.1 代码编写规则 13 3.2 注释 13 3.3 标识符 14 3.4 变量和常量 15 3.5 数据类型 16 3.5.1 基本数据类型 16 3.5.2 对象类型 21 3.6 类型转换 21 3.6.1 自动类型转换 22 3.6.2 强制类型转换 24 3.6.3 String型对象与基本数据类型间的运算 25 3.7 运算符 25 3.7.1 逻辑非(!) 26 3.7.2 位非运算符(~) 26 3.7.3 符号运算符(+、-) 27 3.7.4 增减运算符(++、--) 27 3.7.5 算术运算符(+、-、*、/) 29 3.7.6 位移(shift)运算符(、、) 29 3.7.7 关系运算符(、、=、=、==、!=) 31 3.7.8 快速逻辑与(&&)和快速逻辑或(||) 32 3.7.9 位运算符:位与(&)、位或(|)、位异或(^) 34 3.7.10 三目运算符(?:) 35 3.7.11 赋值运算符 36 3.7.12 对象运算符(instanceof) 37 3.8 巩固练习 37 第4章 程序流程控制语句 39 4.1 if语句 39 4.1.1 if语句格式1 39 4.1.2 if语句格式2 40 4.1.3 if语句格式3 41 4.2 switch语句 44 4.3 for语句 46 4.3.1 break语句 49 4.3.2 continue语句 49 4.3.3 多重for循环语句 50 4.3.4 多重for循环语句中的break与continue 52 4.4 while语句 55 4.5 do-while语句 57 4.6 巩固练习 57 第5章 类与对象 59 5.1 类的定义与对象的创建 59 5.2 引用赋值 61 5.3 成员方法 62 5.3.1 void返回类型 64 5.3.2 无参方法 65 5.3.3 多参方法 65 5.4 局部变量和成员变量 67 5.5 this引用 68 5.6 静态变量与静态方法 70 5.7 成员与静态方法的关系 71 5.8 包与导入 72 5.9 访问控制符 74 5.10 重载 77 5.11 构造函数 79 5.12 类的初始化 83 5.12.1 静态块 84 5.12.2 实例块 84 5.13 巩固练习 85 第6章 数组 86 6.1 基本数据类型数组 86 6.2 一维数组的初始化 88 6.3 对象数组 88 6.4 二维数组 91 6.5 三维数组 95 6.6 巩固练习 97 第7章 对象与方法 99 7.1 对象的创建与销毁 99 7.2 值传递调用 102 7.3 引用传递调用 103 7.4 获取命令行参数 105 7.5 返回对象引用 106 7.6 返回新对象 107 7.7 自引用 108 7.8 递归调用 111 7.9 巩固练习 114 第8章 继承 117 8.1 继承的概念 117 8.2 子类对象的创建 118 8.3 this与super 119 8.4 继承中的访问控制符 123 8.5 覆盖 124 8.6 多态 126 8.7 引用的范围 127 8.8 引用变量的类型转换 128 8.9 Object类 129 8.10 “==”与equals() 130 8.11 Object型引用变量 132 8.12 类的层级图 134 8.13 巩固练习 135 第9章 抽象类与接口 136 9.1 抽象类 136 9.2 final关键字 138 9.3 接口 139 9.4 Cloneable 接口 143 9.5 Enumeration接口 144 9.6 巩固练习 145

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值