使用Canvas绘制调色板和工艺卡片
本文继续学习《从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绘制调色板和工艺卡片相关推荐
- 使用Canvas绘制调色板和工艺卡片(续)
由于前面主要学习在Canvas中使用绘线条的函数绘制线条,上一篇文章<使用Canvas绘制调色板和工艺卡片>中绘制工艺卡片时只是绘制的卡片中的线条,对于卡片中的固定文本绘制没有涉及. ...
- h5 canvas仿 Photoshop 绘制调色板
本文采取的是最原始方式进行绘制,实现类似渐变的效果等都是最原始的.我进行了大量的循环绘制,而 js 的效率本来就不高.建议采用系统的渐变 api 进行绘制,靠底层的能力,效率应该会高出不少.但渐变的绘 ...
- android开发 之 Canvas绘制文字,图片
一.Canvas的常用操作速查表 操作类型 相关API 备注 绘制颜色 drawColor, drawRGB, drawARGB 使用单一颜色填充整个画布 绘制基本形状 drawPoint, draw ...
- canvas绘制的文字如何换行
<html><head><title>canvas绘制的文字如何换行</title><style type="text/css" ...
- 使用Python,Opencv绘制调色板及圆形来模拟霓虹的渐变效果
使用Python,Opencv绘制调色板及圆形来模拟霓虹的渐变效果 1. 效果图 2. 源码 参考 这篇博客将使用python,opencv绘制调色板及圆形来模拟霓虹的渐变效果. 1. 效果图 可以构 ...
- HTML5 canvas绘制雪花飘落
Canvas是HTML5新增的组件,它就像一块幕布,可以用JavaScript在上面绘制各种图表.动画等.没有Canvas的年代,绘图只能借助Flash插件实现,页面不得不用JavaScript和Fl ...
- canvas绘制时钟
听了慕课网Sliav Zhou 的课程canvas绘制时钟,记录下来的代码,每句做了注解便于以后学习,原先每次边听别的课边敲码,错误百出,明明原封不动复制的代码,就会出错,还找不到原因,今天可能运气好 ...
- canvas绘制圆形
canvas绘制圆形的思路: 1.创建路径 XXX.beginpath(); 2.创建圆形的路径: 3.关闭路径:XXX.closepath(); 路径不关闭也能绘制出图形 4.设定绘制样式. 创建圆 ...
- java canvas 画图片_[Java教程][HTML5] Canvas绘制简单图片
[Java教程][HTML5] Canvas绘制简单图片 0 2016-05-13 13:00:04 获取Image对象,new出来 定义Image对象的src属性,参数:图片路径 定义Image对象 ...
最新文章
- Python中完整的机器学习数据科学课程
- Python核心模块——urllib模块
- (转)一个as3写的减速效果
- javascript 构造函数类和原型 prototyp e定义的属性和方法的区别
- python多线程爬虫界面_多线程网页爬虫 python 实现
- repositoryitemlookupedit根据每行的id绑定数据_一种根据数据库自增ID生成唯一ID的解决方案...
- 【原】母版页、皮肤、导航 那点事 Master Pages Themes and Navigation Controls FAQ
- boot定时任务开启和关闭 spring_spring-boot 多线程并发定时任务的解决方案
- 世界服务器系统竞赛,他们为何对ASC世界大学生超算竞赛情有独钟?
- 使用FileSystem类进行文件读写及查看文件信息
- mac 重置 Mac 上的 NVRAM 或 PRAM
- 删除linkinfo.dll
- MySQL权限系统(三).权限表 Grant Tables
- 计算各种面值人民币张数
- 《区块链技术与应用》学习笔记10——ETH数据结构
- Cesium鼠标事件汇总
- springdata jpa封装数据库关键字(EQ, LIKE, GT, LT, GTE, LTE,IN)
- 分布式多通道相机同时拍照系统
- 怎样用计算机打出Abc,妙用智能ABC输入法 -电脑资料
- 《江畔独步寻花》评课稿
热门文章
- 灰色关联分析过程及代码实现
- FPGA并行计算可编程芯片
- 学生查分系统该怎么制作?
- Verilog设计_乘法器
- 知乎cookies的介绍_使用cookie登陆知乎
- 用Python读取照片拍摄的详细信息(拍摄时间、地址等)
- cad计算机在哪,Win7系统中cad临时文件保存在哪里
- 关于Windows 7下的DEP(数据执行保护)
- 【SLAM编译错误】CMakeFiles/Makefile2:252: recipe for target 'CMakeFiles/stereo_kitti.dir/all' failed
- 开香港汇丰银行账户需要什么条件?办理需要多少价格?