canvas的本质

1、<canvas> 标签只是图形容器,相当于一个画布,canvas 元素本身是没有绘图能力的。
2、所有的绘制工作必须在 js内部完成,相当于使用画笔在画布上画画。

使用

  • 必须指定宽高,用到getcontext()方法
<canvas id="charts" width="800" height="400"></canvas>
  • context 是一个封装了很多绘图功能的对象(html5里新增的),我们在页面中创建一个 canvas 标签之后,首先要使用 getContext() 获取 canvas (用原生js获取元素),目前 getContext() 的参数只有 2d,暂时还不支持 3d

分类

1、js获取元素

const canvas = document.getElementById('charts');
const context = canvas.getContext('2d');

2、

绘制线段

  • moveTo(x, y):把路径移动到画布中的指定点,不创建线条
  • lineTo(x, y):添加一个新点,然后在画布中创建从该点到最后指定点的线条
context.strokeStyle = 'yellowgreen';
context.moveTo(0, 0);
context.lineTo(100, 100);
context.stroke();

绘制矩形

fillRect(x, y, width, height) 绘制填充颜色的矩形

  • strokeRect(x, y, width, height) 绘制线条的矩形
context.fillStyle = "pink";
context.strokeStyle = "darkred";
context.fillRect(0, 0, 100, 100);
context.strokeRect(120, 0, 100, 100);

绘制圆形

  • arc(x, y, radius, starAngle, endAngle, anticlockwise)

    • x : 圆心的 x 坐标
    • y:圆心的 y 坐标
    • radius : 半径
    • starAngle :开始角度
    • endAngle:结束角度
    • anticlockwise :是否逆时针(true)为逆时针,(false)为顺时针
context.beginPath();
context.arc(300, 350, 100, 0, Math.PI * 2, true);
//不关闭路径路径会一直保留下去
context.closePath();
context.fillStyle = 'rgba(0,255,0,0.25)';
context.fill();
// 或
// context.stroke(); // 此时就会有问题

清除路径

清除绘画的路径,多个图形就不会连接在一起

context.beginPath()
context.closePath()

清除矩形区域

当在一个画布反复绘制图形,需要将上一次的图形清空

  • clearRect(x, y, width, height)

绘制文字

  • fillText(text, x, y, maxWidth)

案例:绘制一个柱状图

一个少女心满满的例子带你入门 Canvas

【canvas使用】相关推荐

  1. canvas java 上传截图_在Vue项目中使用html2canvas生成页面截图并上传

    使用方法 项目中引入 npm install html2canvas html代码 //html代码 js代码 // 引入html2canvas import html2canvas from 'ht ...

  2. 画布Canvas的使用

    canvas.drawText();//画文本 canvas.drawArc();//画弧 canvas.drawCircle();//画圆 canvas.drawBitmap(); canvas.d ...

  3. Android 自定义View Canvas —— Bitmap

    Bitmap 绘制图片 常用的方法有一下几种 (1) drawBitmap(@NonNull Bitmap bitmap, float left, float top, @Nullable Paint ...

  4. Android 自定义View —— Canvas

    上一篇在android 自定义view Paint 里面 说了几种常见的Point 属性 绘制图形的时候下面总有一个canvas ,Canvas 是是画布 上面可以绘制点,线,正方形,圆,等等,需要和 ...

  5. android Canvas 最基础知识总结

    学习Canvas 要先学习view 知识,这样才好学习 第一步 创建一个方法 让它继承 View 如下图 然后快捷键ait+/ 生成构造方法, 用来初始化View ,比如自定一个一些init()方法, ...

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

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

  7. 从0到1 html5 canvas,Html5 Canvas学习之路(五)

    Canvas 图像(上) Canvas 图像API可以加载图像数据,然后直接将图像应用到画布上.还可以裁切.拼贴图像数据,以显示用户需要的部分.此外,Canvas还提供了像素数据的存储功能,这样就能对 ...

  8. SVG和canvas

    1.SVG实现的圆环旋转效果 参考:http://www.softwhy.com/article-6472-1.html 2.SVG中的图形可以通过  transform="matrix(0 ...

  9. D3.js、HTML5、canvas 开发专题

    https://www.smartdraw.com/genogram/ http://www.mamicode.com/info-detail-1163777.html  D3折线图 https:// ...

  10. 7个华丽的基于Canvas的HTML5动画

    说起HTML5,可能让你印象更深的是其基于Canvas的动画特效,虽然Canvas在HTML5中的应用并不全都是动画制作,但其动画效果确实让人震惊.本文收集了7个最让人难忘的HTML5 Canvas动 ...

最新文章

  1. android数据库三个方法有哪些,一个三年Android开发的总结 - 常见数据库问题总结...
  2. Leetcode 905. 按奇偶排序数组
  3. 学习笔记——XSLT转换器的使用(Xalan和Saxon) .(转)
  4. 贝叶斯判别分析的基本步骤_贝叶斯分析助你成为优秀的调参侠(1)
  5. vc picture控件的分类总结(转载)
  6. mysql分句执行_《Mysql 一条 SQL 语句是如何执行的?》
  7. 【链表】单链表的排序(归并排序)
  8. mysql判断是日期是第几周
  9. Linux编译libpcap
  10. 计蒜客 贝壳找房函数最值(好题,巧妙排序)
  11. 保护计算机组件免受esd,TVS管与ESD保护二极管的区别
  12. 网店营销忌讳效应:要知道别人不喜欢什么
  13. 计算机专业综合理论模拟测试卷五,2020银保监会考试题库:计算机类模拟试题练习(五)...
  14. TMS320C6748_ECAP_APWM
  15. ElementUI分页组件+Vue
  16. Arduino - 驱动HC-SR501 人体红外感应模块
  17. 自学C++之自定义数据类型与自定义类之数组使用4例
  18. 变化环境下渭河流域水文干旱演变特征剖析
  19. 【日常训练】2019-10-24am_xjoi结界[生与死的境界]/codeforces878E_贪心
  20. Proteus8.9 VSM Studio SDCC编译器仿真STC15W4K32S4系列013_iic_03_AT24C08

热门文章

  1. 掌门少儿打造高质课程,助力少年儿童全方位发展
  2. 揭秘;抖音美妆账号如何做?如何玩转抖音美妆类运营:国仁楠哥
  3. 智慧园区数据可视化大屏的优势分析
  4. 请大家帮忙看下这个shader的问题:
  5. 2021届Java开发求职-------面试实战之Vivo提前批
  6. web前端全套教程,入门必备
  7. ESD防护选型思路(二)
  8. AEIA2018 | 中国工程院院士李骏:智能网联汽车的安全和自主创新是当下的关键...
  9. 软件测试中的用户思维
  10. linux7台式机安装失败,台式机安装centos7提示“No Caching mode page found”