canvas的描述
// 1、找到DOM节点
const canvas = document.getElementById('canvas');
// 2、画笔 --- canvas的上下文对象
const ctx = canvas.getContext('2d');
// 3、设置颜色 ---- 调色
ctx.fillStyle = "red"; // 填充颜色的设置
ctx.strokeStyle = 'blue'; // 轮廓(边框)颜色的设置
// 4、线条的设置
ctx.lineWidth = 10; // 线宽的设置
ctx.lineCap = 'butt/round/square'; // 线条边缘设置--- 不设置、手机加圆壳、手机加方壳
ctx.lineJoin = 'miter/bevel/round'; // 线条相交样式--- 尖尖的、平平的、圆圆的
// 5、绘制矩形 -- 确定区域
ctx.rect(x, y, w, h);
// ctx.fillRect(x, y, w, h) 无需单独再上色,确定区域并且直接上色
// ctx.strokeRect(x, y, w, h)
// 6、绘制圆弧
// startAngle endAngle ---- 用的不是角度,用的是弧度
// bool false--- 顺时针 true----逆时针 默认值为false --- 可选参数
ctx.arc(x, y, r, startAngle, endAngle[, bool])
// 7、绘制线段
ctx.moveTo(x, y); // 从哪里开始画
ctx.lineTo(x1, y1); // 画到那里去
// 8、绘制贝塞尔曲线
ctx.bezierCurveTo(x0, y0, cx0, cy0, x1, y1); // 起始点、控制点、终止点
ctx.quadraticCurveTo(cx1, cy1, x2, y2); // 控制点、终止点-上一个的终止点作为它的起始点
// 9、线性渐变
var lg = ctx.createLinearGradient(x, y, w, h) // 确定渐变区域
lg.addColorStop(0,"#f00");
lg.addColorStop(1,"#fff");
ctx.fillStyle = lg; //调色 --- 调的是渐变色
ctx.strokeStyle = lg;
// 10、径向渐变
var rg = ctx.createRadialGradient(x0, y0, r0, x1, y1, r1)
rg.addColorStop(0,"#f00");
rg.addColorStop(1,"#fff");
ctx.fillStyle = rg; //调色 --- 调的是渐变色
ctx.strokeStyle = rg;
// 11、图像
ctx.drawImage(img, x, y) // 图片img放到那里去
ctx.drawImage(img, x, y, w, h) // 图片img放到那里去,宽高为多少
ctx.drawImage(img, x0, y0, fw, fh, x, y, w, h) // 截取img,从哪里开始,截取多少,放到那里去,宽高为多少
// 12、开始和结束绘制
ctx.beginPath(); // 重新开始绘制 --- 画完洗了画笔,重新开始绘制
ctx.closePath(); // 结束
// 13、保存和恢复状态
ctx.save();
ctx.restore();
// 14、绘制图像的先后顺序影响图像的显示 ---- 图像组合
ctx.globalCompositeOperation = typeo
/**
source-over(默认值):在原有图形上绘制新图形
destination-over:在原有图形下绘制新图形
source-in:显示原有图形和新图形的交集,新图形在上,所以颜色为新图形的颜色
destination-in:显示原有图形和新图形的交集,原有图形在上,所以颜色为原有图形的颜色
source-out:只显示新图形非交集部分
destination-out:只显示原有图形非交集部分,是将交集的部分转化为透明 --------- 刮刮乐
source-atop:显示原有图形和交集部分,新图形在上,所以交集部分的颜色为新图形的颜色
destination-atop:显示新图形和交集部分,新图形在下,所以交集部分的颜色为原有图形的颜色
lighter:原有图形和新图形都显示,交集部分做颜色叠加
xor:重叠部分不显示
copy:只显示新图形
*/
// 填充或者绘制边框 --- 上色
ctx.fill();
ctx.stroke();
用canvas绘制一个静态的圆弧进度条
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<canvas id="canvas" width="" height="">您的浏览器不支持canvas</canvas>
</body>
<script>
const canvas=document.getElementById('canvas')
const ctx = canvas.getContext('2d') ctx.beginPath();
ctx.arc(, , , , * Math.PI, false);
ctx.lineWidth = ;//绘制圆环
ctx.strokeStyle = 'red';
ctx.stroke();
// ctx.font = "italic 30px 微软雅黑";
// ctx.fillText('信封', 120, 100) // 绘制进度环
var startAngle = / * Math.PI; //开始位置弧度
var percentage = ; //完成进度值
var diffAngle = percentage / * Math.PI * ; //完成进度弧度值
ctx.beginPath();
ctx.arc(, , , startAngle, diffAngle + startAngle, false);
ctx.strokeStyle = 'green';
ctx.stroke(); // 绘制文字
ctx.fillStyle = '#ff0';
ctx.textAlign = 'center';
ctx.font = '24px serif';
ctx.fillText(percentage + '%', +, +);
</script>
</html>
canvas的描述的更多相关文章
- SVG和canvas渲染的性能比较
1.什么是SVG? 描述: 一种使用XML描述的2D图形的语言 SVG基于XML意味着,SVG DOM中的每个元素都是可用的,可以为某个元素附加Javascript事件处理器. 在 SVG 中,每个被 ...
- Android应用程序窗口(Activity)的测量(Measure)、布局(Layout)和绘制(Draw)过程分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8372924 在前面一篇文章中,我们分析了And ...
- android SurfaceView绘制实现原理解析
在Android系统中,有一种特殊的视图,称为SurfaceView,它拥有独立的绘图表面,即它不与其宿主窗口共享同一个绘图表面.由于拥有独立的绘图表面,因此SurfaceView的UI就可以在一个独 ...
- 杂项:HTML5-2/3-新元素
ylbtech-杂项:HTML5-2/3-新元素 自1999年以后HTML 4.01 已经改变了很多,今天,在HTML 4.01中的几个已经被废弃,这些元素在HTML5中已经被删除或重新定义. 为了更 ...
- Android视图SurfaceView的实现原理分析(示例,出错代码)
在Android系统中,有一种特殊的视图,称为SurfaceView,它拥有独立的绘图表面,即它不与其宿主窗口共享同一个绘图表面.由于拥有独立的绘图表面,因此SurfaceView的UI就可以在一个独 ...
- android自定义View_1——Custom Drawing
前言:自定义view重要的部分就是view的展示样式,为了实现view的样式可以重写onDraw()方法. 一:Override onDraw() 1.当覆盖了onDraw()方法后,需要一个Canv ...
- SurfaceView之绘制sin曲线
package com.loaderman.customviewdemo; import android.animation.ValueAnimator; import android.content ...
- 什么是H5?
总听到很多人说H5,现在H5很火,到底H5是什么,以下发表个人对H5的理解. HTML5 将成为 HTML.XHTML 以及 HTML DOM 的新标准. HTML 的上一个版本诞生于 1999 年. ...
- 简单入门canvas - 通过刮奖效果来学习
一 .前言 一直在做PC端的前端开发,从互联网到行业软件.最近发现移动端已经成为前端必备技能了,真是不能停止学习.HTML5新增的一些东西,canvas是用的比较多也比较复杂的一个,简单的入门了一下, ...
随机推荐
- Django | pycharm 提示 unresolved attribute referene 'objects' for class 'xxxx'
objects高亮,提示信息为unresolved attribute referene 'objects' for class 'BookInfo' 当前情况是pycharm没有识别到objects ...
- 一点点学习PS--实战七
本节实战的内容,熟练之前几个实战中的操作: 如反复使用图层调整层中曝光度,色彩平衡,调节图片的色调:反复使用图层样式中的颜色叠加--高斯模糊--添加图层蒙版--渐变工具--不透明度来画影子. 打组(C ...
- 杭电oj 2072————统计单词数(java)
problem:统计单词数 思路:利用HashMap的特性——不能反复存储同一个键得数据,所以可以保证map里边儿的元素都是不重复的,存储完毕之后直接输出size就好了 注意事项: 1.利用strin ...
- cookies、sessionStorage和localStorage的异同点
相同点:都是存储于客户端 不同点: 1.存储大小 cookies数据大小不能大于4k; localStorage和sessionStroage则可以达到5M: 2.有效时间 cookies在设置的有效 ...
- Netcat工具
一般Netcat有两个版本,一个版本是不提供反向连接的版本,一个是全功能版本.这两者的区别就是是否带-e参数,只有带-e参数的版本才支持反向连接. 参数说明 -c shell commands she ...
- git创建远程分支并推送
1.查看所有分支(-a=>'查看全部的分支') git branch -a 2.创建本地test分支 git branch test 2.2切换test分支 git checkout test ...
- 通过属性选择器找元素,可以通过$(__).length是否为0来判断是否找到了元素
通过属性选择器找元素,可以通过$("").length是否为0来判断是否找到了元素. 为0的时候表示没有找到,其余则返回找到了多少个. 不能通过$("")是否为 ...
- win10 解决.net framework 3.5 安装报错 0x80240438
打开注册表:cmd+r 输入regedit,确定:找到路径HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU ...
- java中一个类中的 this. 是什么作用
2)this代表的是本类的实例对象,不是什么调用本类的方法的对象.当你用new创建一个对象的时候,对象就已经在内存了.(具体的你的血jvm和反射).构造方法只是为了给对象里的属性赋值.在类里任何地方出 ...
- DFT 问答 III
1.Boundary scan Boundary Scan就是我们俗称的边界扫描.Boundary Scan是上世纪90年代由 Joint Test Action Group(JTAG)提出的,它的初 ...