好程序员分享24个canvas基础知识小结,非常全面详尽,推荐给大家。

  现把canvas的知识点总结如下,以便随时查阅。

  1、填充矩形 fillRect(x,y,width,height);

  2、绘制矩形边框 strokeRect(x,y,width,height);

  3、擦除矩形 clearRect(x,y,width,height);

  4、填充样式 fillStyle="red"; 样式可以为颜色、渐变和图像。

  5、描边样式 strokeStyle="red";

  6、描边线条的宽度 lineWidth=4;

  7、线条末端形状 lineCap="butt"; butt(对接)/round(圆)/square(方),默认情况下是butt;

  8、线条相交样式 lineJoin="miter"; miter(尖角)/round(圆角)/bevel(斜角),默认尖角;

  9、开始绘制路径 beginPath();

  10、结束路径 closePath(); 创建路径后,如果想绘制一条连接到路径起点的线条,可以调用closePath();

  11、绘制圆弧 arc(x,y,radius,startAngle,endAngle,true/false);

  12、绘制弧线 arcTo(x1,y1,x2,y2,radius) 从上一点开始绘制一天弧线,到x2,y2为止,并且以给定的半径radius穿过x1,y1;

  13、moveTO(x,y); 将绘图游标移动到(x,y),不画线

  14、lineTo(x,y); 从上一点开始绘制一条直线

  15、二次贝塞尔曲线: quadraticCurveTo(cx,cy,x,y); 从上一点开始绘制二次曲线,到x,y为止,cx,cy作为控制点。

  16、三次贝塞尔曲线: bezierCurveTo(cx1,cy1,cx2,cy2,x,y); 从上一点开始绘制二次曲线,到x,y为止,cx1,cy1和cx2,cy2作为控制点。

  17、rect(x,y,width,height);从点x,y开始绘制矩形,宽度和高度分别由width和height指定。这个方法绘制的是矩形路径,而不是独立形状。

  18、绘制文本:

  (1) 填充文本:fillText("hello",x,y,width);width为可选的最大像素宽度,如果文本大于最大宽度,则文本会收缩以适应最大宽度。

  (2) 文本描边:strokeText("hello",x,y,width);width为可选的最大像素宽度。

  (3) 文本样式:font="bold 14px Arial";

  (4) 水平文本对齐:textAlign='start'; // start, end, left,right, center。默认值:start。以文字的起始点(x,y)为基点的纵轴进行对齐。

  (5) 垂直文本对齐:textBaseline='alphabetic'; //top, hanging, middle,alphabetic, ideographic, bottom。

默认值:alphabetic。以文字的起始点(x,y)为基点的横轴进行对齐。

  (6) 文本的宽度:var text="hello"; var length=context.measureText(text);参数text为所需要绘制的文字

  19、变换

  (1) rotate(angle):围绕原点旋转图像angle弧度。

  (2) scale(x,y):缩放图像。也可以使用transform(x,0,0,y,0,0);

  (3) translate(x,y):将坐标原点移动到x,y,执行这个变换之后,坐标0,0会变成之前由x,y表示的点。

  (4) transform(, , ,,x, y);

  (5) setTransform(, , ,,x, y);将变换矩阵重置为默认状态,然后再调用transform();

  20、图形组合

  代码如下:

  context.fillStyle="blue";

  context.fillRect(10,10,100,100);

  context.globalCompositeOperation='lighter'; 可选值如/ /内。

  context.fillStyle="red";

  context.arc(110,60,50,0,Math.PI*2,false);

  context.fill();

  /*

  source-over(默认值):

  destination-over:在原有图形之下绘制新图形

  source-in:新图形与原有图形作in运算,只显示新图形中与原有图形相重叠的部分

  destination-in:原有图形与新图形作in运算,只显示新图形中与原有图形相重叠的部分

  source-out:新图形与原有图形作out运算,只显示新图形中与原有图形不重叠的部分

  destination-out:新图形与原有图形作out运算,只显示新图形中与原有图形不重叠的部分

  source-atop:只绘制新图形中与原有图形重叠的部分和未被重叠的原有图形

  destination-atop:只绘制原有图形中被新图形重叠的部分和新图形的其他部分

  lighter:原有图形与新图形均绘制,重叠部分做加色处理

  xor:只绘制新图形与原有图形不重叠的部分,重叠部分变透明

  copy:只绘制新图形

  */

  21、绘制图形阴影

  代码如下:

  context.shadowOffsetX=10; //阴影的横向位移量

  context.shadowOffsetY=10; //阴影的纵向位移量

  context.shadowColor='rgba(100,100,100,0.5)'; //阴影的颜色

  context.shadowBlur=7; //阴影的模糊范围

  22、绘制、平铺、裁剪图像

  代码如下:

  context.drawImage(image,x,y);

  context.drawImage(image,x,y,w,h);

  context.drawImage(image,sx,sy,sw,sh,dx,dy,dw,dh);sx,sy和sw,sh为源图像的被复制区域的起始坐标和高度,dx,dy和dw,dh为复制后的区域的目标坐标和高度。

  context.createPattern(image,type);图像平铺,参数可以为:no-repeat,repeat-x,repeat-y,repeat;

  context.clip(); //裁剪功能

  例子:

  代码如下:

  image=new Image(); //创建Image对象

  image.src="../images/wukong.gif";

  var test=context.createPattern(image,'repeat-y');//createPattern设置平铺效果,

  context.fillStyle=test;

  context.fillRect(0,0,400,400);

  image.οnlοad=function() { //此方法的作用是,如果图片是比较大的网络图像文件,防止图像全部装载完毕才看见该图像,这样就可以一边装载一边绘制了。

  drawImg(context,image);

  }

  function drawImg(context,image){

  //绘制原始图像

  context.drawImage(image,10,10,125,125);

  //局部放大

  context.drawImage(image,20,0,90,100,150,10,125,125);

  context.rect(20,20,80,80);

  context.clip();

  context.drawImage(image,0,0,200,200);

  }

  23、保存、恢复

  contex.save();将当前状态保存到栈中。注意:保存的只是对绘制图形的设置和变换,不会保存绘制图形的内容。

  context.restore();从栈中取出之前保存的图形状态

  可以应用的场合:

  (1)图像或图形变形

  (2)图像裁剪

  24、线性渐变

  代码如下:

  var g=context.createLinearGradient(xStart,yStart,xEnd,yEnd);

  var g1=context.createRadialGradient(xStart,yStrat,radiusStrat,xEnd,yEnd,radiusEnd);

  g.addColorStop(0,'red');

  g.addColorStop(0,'green');

  context.fillStyle=g;

  context.fillRect(0,0,200,200);

好程序员分享24个canvas基础知识小结相关推荐

  1. 好程序员分享24个canvas基础知识小结 1

    好程序员分享24个canvas基础知识小结,非常全面详尽,推荐给大家. 现把canvas的知识点总结如下,以便随时查阅. 1.填充矩形 fillRect(x,y,width,height); 2.绘制 ...

  2. 软考 程序员教程-第一章 计算机系统基础知识

    软考 程序员教程-第一章 计算机系统基础知识 为了督促自己学习,告别懒惰,在此先给自己定个小目标,请大家监督哟! 目标:一个月内过一遍<程序员教程>,下一个月开始上真题. 简单看了下,我在 ...

  3. 软考 程序员教程-第二章 操作系统基础知识

    软考 程序员教程-第二章 操作系统基础知识 第二章 操作系统基础知识 2.1.操作系统概述(第四版教程P44) 操作系统的4个特征:并发性.共享性.虚拟性.不确定性. 操作系统的5个功能:处理机管理. ...

  4. unicode 编码转换漏洞_好程序员Python教程之字符串编码知识小结

    好程序员Python教程之字符串编码知识小结,提及Python字符串,你会想到什么?是ASCII,还是Unicode?他们之间是如何转换的?字符串编码和字符串有什么区别?接下来好程序员Python教程 ...

  5. python编码转换语句_好程序员Python教程之字符串编码知识小结

    好程序员Python教程之字符串编码知识小结,提及Python字符串,你会想到什么?是ASCII,还是Unicode?他们之间是如何转换的?字符串编码和字符串有什么区别?接下来好程序员Python教程 ...

  6. 程序员必会的核心基础知识:1张导图+10本书

    ▲点击可查看大图 一年一度的秋招即将拉开序幕,程序员"金九银十"跳槽季也接踵而至.大部分互联网公司都会进行基础知识的考察,基础知识的重要性不言而喻. 计算机基础知识对程序员来说为什 ...

  7. 非科班的java程序员该如何补充计算机基础知识,需要看哪些书?

    java比较特殊,毕竟后端扛霸子,想要认真学好java,必须有好的计算机基础,可是为什么需要基础呢? 把这个问题弄明白,要学哪些基础知识就清楚多了. 第一个问题,10个用户使用的系统和1000000个 ...

  8. 前端程序员容易忽视的一些基础知识

    基础数据结构与算法 现在有两个不同的JSON,比较复杂,可以参考这里的DEMO中返回的JSON.要比较它们的差异,除了用现成的工具如 beyond compare 以外,如果我们的机器上没有安装这个工 ...

  9. 程序员教程-1章-计算机系统基础知识

    觉得自己看第一章看了很长时间,才看了二.三十页,而且也是稀里糊涂的,先记下吧.(补记:稀里糊涂看完了,这章只考选择题,也就没深入了解,其实是了解一下头就大) 先记录一下目录结构,方便以后回忆内容. 本 ...

最新文章

  1. 查看和设置MySQL数据库字符集(转)
  2. Nginx设置成服务并开机自动启动的配置详解
  3. 第四范式程晓澄:机器学习如何优化推荐系统
  4. Nginx(二) 虚拟主机配置
  5. 使用vscode调试Nodejs
  6. Java Web系统经常使用的第三方接口
  7. 如何轻松使用 C 语言实现一个栈?​
  8. 计算机网络透明网桥的算法,网基课程设计曼切斯特编码模拟透明网桥自习域转发帧算法模拟IP分片模拟.doc...
  9. 直接拿来用!最火的iOS开源项目(一~三)
  10. VMware中安装linux系统(可视化界面centOS 7)
  11. tkmybatis更新无效
  12. 推荐系统(十八)Gate网络(一):新浪微博GateNet
  13. 基于Redis的分布式链家二手房房源数据爬虫系统 毕业设计
  14. 网络安全防护-----本地组策略的使用
  15. MyEclipse快捷键Alt+Shift+s详解
  16. 计算机毕业论文进展情况说明,研究生学位论文进展情况 毕业论文的进度和计划安排怎么写~~请详细些~~...
  17. 在Unity中实现体素化
  18. potatso lite怎么添加代理_「科技犬」除了苹果AirPods,真无线蓝牙耳机到底怎么选?_蓝牙耳机...
  19. 报计算机专业高考必考科目,不能错过的重点!新高考选科:名校专业必选的那些科目!...
  20. 漏洞复现----12、Apache Flink目录穿越漏洞(CVE-2020-17519 )

热门文章

  1. 如何查看Linq to SQL运行时,实际执行的Sql语句
  2. SharePoint 2010 自定义日志
  3. iOS处理高并发量的数据请求和数据集合的对应关系
  4. 软件工程概论——课堂测试1
  5. 生产中NFS案例记录---写入权限解决过程
  6. github上fork了别人的项目后,再同步更新别人的提交
  7. Scala的基本语法总结
  8. 搭建Solr集群的推荐方案
  9. 安装Macports遇到的问题和PATH设置
  10. 兄弟们,TechEd见!