本文继续学习《从0到1 HTML5 Canvas动画开发》。上一篇文章学习了直线绘制函数,并绘制了机械制图中的工程符号。本文接着学习矩形和多边形绘制方法。
  绘制多边形主要使用的函数还是moveTo和lineTo,比较麻烦的是计算多边形的点坐标。
  绘制矩形主要包括两种方式,一种是绘制描边矩形,也就是空心矩形,另外一种是绘制没有边的实心矩形。这两种绘制方式主要调用的函数如下:

  • strokeRect函数:该函数用于绘制描边矩形,如果需要设置颜色,需要在调用该函数前设置strokeStyle属性。调用strokeRect函数后,会立刻绘制描边矩形;
  • fillRect函数:该函数用于绘制不带边的实心矩形,如果需要设置填充颜色,需要在调用该函数之前设置fillStyle属性。调用fillRect函数后,会立刻绘制实心矩形;
  • rect函数:rect函数属于通用的矩形绘制函数,既可以绘制描边矩形,也可以绘制实心矩形,但调用它后不会立刻绘制矩形。如果需要绘制描边矩形,可以先设置strokeStyle属性,然后调用stroke函数绘制描边矩形。如果需要绘制实心矩形,可以先设置fillStyle属性,然后调用fill函数绘制实心矩形。

  函数虽然简单,但是可以使用它们绘制出复杂的形状。本文中有两个程序示例,一个是书中自带的调色板示例,另外一个是绘制工艺卡片的样式。

绘制调色板程序

  设置控件属性或者使用程序选择颜色时经常使用调色板。书中给出了两种调色板示例,一种是能看出明显颜色方框的,这种比较容易看出代码实现方式。另外一种是从左到右的颜色带,原来不清楚实现方式,看过示例代码后才发现不是太复杂。实现代码如下所示(书中给的现成代码),程序效果如下图所示:

<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script type="text/javascript">window.onload=function(){var cnv=document.getElementById("canvas");var cxt=cnv.getContext("2d");for(var i=0;i<6;i++){for(var j=0;j<6;j++){cxt.fillStyle="rgb("+Math.floor(255-42.5*i)+","+Math.floor(255-42.5*j)+",0)";cxt.fillRect(j*25,i*25,25,25);}}var r=255,g=0,b=0;for(var i=0;i<150;i++){if(i<25){g+=10;}else if(i>25 && i<50){r-=10;}else if(i>50 && i<75){g-=10;b+=10;}else if(i>75 && i<100){r+=10;}else{b-=10;}cxt.fillStyle="rgb("+r+","+g+","+b+")";cxt.fillRect(200+3*i,0,3,cnv.clientHeight);}        }</script></head>
<body><canvas id="canvas" width="400" height="300" style="border: 1px dashed gray;"></canvas>
</body>

绘制工艺卡片样式

  工艺卡片是制造企业编制工艺及生产加工时常用的东西,其实就是比较复杂的表格,根据生产需要填写工艺信息。在网上找了如下图所示的电镀工艺卡片(卡片样式来源于参考文献3)。从下图可以看出,卡片由文字、线条和矩形组成。本文使用绘制线条和矩形的函数来绘制该卡片样式(不包括文字)。   将绘制卡片的步骤分为三部分:卡片头部、卡片中间部分和卡片尾部。每部分的绘制都是使用moveTo、lineTo、strokeRect和fillRect几个函数绘制。完整的代码放在了码云上面,地址为:https://gitee.com/guochao2299/draw-craft-card。程序的运行效果如下图所示:

参考文献:
[1]从0到1,HTML5 Canvas动画开发
[2]https://www.runoob.com/tags/ref-canvas.html
[3]https://baike.baidu.com/item/%E5%B7%A5%E8%89%BA%E5%8D%A1/8940434?fr=aladdin

使用Canvas绘制调色板和工艺卡片相关推荐

  1. 使用Canvas绘制调色板和工艺卡片(续)

      由于前面主要学习在Canvas中使用绘线条的函数绘制线条,上一篇文章<使用Canvas绘制调色板和工艺卡片>中绘制工艺卡片时只是绘制的卡片中的线条,对于卡片中的固定文本绘制没有涉及. ...

  2. h5 canvas仿 Photoshop 绘制调色板

    本文采取的是最原始方式进行绘制,实现类似渐变的效果等都是最原始的.我进行了大量的循环绘制,而 js 的效率本来就不高.建议采用系统的渐变 api 进行绘制,靠底层的能力,效率应该会高出不少.但渐变的绘 ...

  3. android开发 之 Canvas绘制文字,图片

    一.Canvas的常用操作速查表 操作类型 相关API 备注 绘制颜色 drawColor, drawRGB, drawARGB 使用单一颜色填充整个画布 绘制基本形状 drawPoint, draw ...

  4. canvas绘制的文字如何换行

    <html><head><title>canvas绘制的文字如何换行</title><style type="text/css" ...

  5. 使用Python,Opencv绘制调色板及圆形来模拟霓虹的渐变效果

    使用Python,Opencv绘制调色板及圆形来模拟霓虹的渐变效果 1. 效果图 2. 源码 参考 这篇博客将使用python,opencv绘制调色板及圆形来模拟霓虹的渐变效果. 1. 效果图 可以构 ...

  6. HTML5 canvas绘制雪花飘落

    Canvas是HTML5新增的组件,它就像一块幕布,可以用JavaScript在上面绘制各种图表.动画等.没有Canvas的年代,绘图只能借助Flash插件实现,页面不得不用JavaScript和Fl ...

  7. canvas绘制时钟

    听了慕课网Sliav Zhou 的课程canvas绘制时钟,记录下来的代码,每句做了注解便于以后学习,原先每次边听别的课边敲码,错误百出,明明原封不动复制的代码,就会出错,还找不到原因,今天可能运气好 ...

  8. canvas绘制圆形

    canvas绘制圆形的思路: 1.创建路径 XXX.beginpath(); 2.创建圆形的路径: 3.关闭路径:XXX.closepath(); 路径不关闭也能绘制出图形 4.设定绘制样式. 创建圆 ...

  9. java canvas 画图片_[Java教程][HTML5] Canvas绘制简单图片

    [Java教程][HTML5] Canvas绘制简单图片 0 2016-05-13 13:00:04 获取Image对象,new出来 定义Image对象的src属性,参数:图片路径 定义Image对象 ...

最新文章

  1. Python中完整的机器学习数据科学课程
  2. Python核心模块——urllib模块
  3. (转)一个as3写的减速效果
  4. javascript 构造函数类和原型 prototyp e定义的属性和方法的区别
  5. python多线程爬虫界面_多线程网页爬虫 python 实现
  6. repositoryitemlookupedit根据每行的id绑定数据_一种根据数据库自增ID生成唯一ID的解决方案...
  7. 【原】母版页、皮肤、导航 那点事 Master Pages Themes and Navigation Controls FAQ
  8. boot定时任务开启和关闭 spring_spring-boot 多线程并发定时任务的解决方案
  9. 世界服务器系统竞赛,他们为何对ASC世界大学生超算竞赛情有独钟?
  10. 使用FileSystem类进行文件读写及查看文件信息
  11. mac 重置 Mac 上的 NVRAM 或 PRAM
  12. 删除linkinfo.dll
  13. MySQL权限系统(三).权限表 Grant Tables
  14. 计算各种面值人民币张数
  15. 《区块链技术与应用》学习笔记10——ETH数据结构
  16. Cesium鼠标事件汇总
  17. springdata jpa封装数据库关键字(EQ, LIKE, GT, LT, GTE, LTE,IN)
  18. 分布式多通道相机同时拍照系统
  19. 怎样用计算机打出Abc,妙用智能ABC输入法 -电脑资料
  20. 《江畔独步寻花》评课稿

热门文章

  1. 灰色关联分析过程及代码实现
  2. FPGA并行计算可编程芯片
  3. 学生查分系统该怎么制作?
  4. Verilog设计_乘法器
  5. 知乎cookies的介绍_使用cookie登陆知乎
  6. 用Python读取照片拍摄的详细信息(拍摄时间、地址等)
  7. cad计算机在哪,Win7系统中cad临时文件保存在哪里
  8. 关于Windows 7下的DEP(数据执行保护)
  9. 【SLAM编译错误】CMakeFiles/Makefile2:252: recipe for target 'CMakeFiles/stereo_kitti.dir/all' failed
  10. 开香港汇丰银行账户需要什么条件?办理需要多少价格?