canvas标签:

<canvas id="cavsElem"  width="400" height="300">您的浏览器不支持canvas</canvas>
 1.定义id属性是为了在JavaScript代码中引用元素2.标签中间的文字在浏览器不支持canvas的情况下才会显示3.canvas标签与img标签一样,有两个原生属性width和height默认300*500像素4.不要用css控制它的宽和高,否则可能会引起画布上的图形变形

要在画布中绘制图形,首先要通过JavaScript的getElementById()函数
获取到网页中的画布对象
var canvas =document.getElementById(‘cavsElem’);

注:canvas画布默认为透明,背景色可以定义

准备画笔:

有了画布之后,开始作画需要准备画笔,这只画笔就是context对象,
context对象是画布的上下文,也叫作绘制环境,是所有的绘制操作API的
入口,该对象可以使用JavaScript脚本获得

 var context=canvas.getContext('2d');参数2d代表画笔的种类,这里用来执行二维操作,把参数替换为webgl,执行三维操作

坐标起始点:

 var context=canvas.getContext('2d');context.moveTo(x,y);上述x,y都是相对于画布的最左上角,使用context对象的moveTo()方法进行设置,相当于移动画笔到某个位置

绘制线条:

在canvas中使用lineTo()方法绘制直线:
context.lineTo(x,y);
"x,y"为线头点坐标,lineTo( )方法用于定义从x,y的位置绘制一条直线
到起点或者上一个线头点

路径:

路径是所有图形绘制的基础,例如绘制直线确定了起始点和线头点,便形成了一条绘制路径,如果绘制复杂路径,必须使用开始路径和闭合路径的方法

 context.beginPath();     //开始路径context.closePath();  //闭合路径

开始路径的核心作用是将不同线条绘制的形状进行隔离,每次执行此方法
表示重新绘制一个路径,同之前绘制的路径可以分开样式设置和管理
闭合路径会自动把最后的线头和开始的线头连在一起

描边:

在canvas图形绘制中,路径只是草稿,真正的绘制先必须执行stroke()方法
根据路径进行描边

     context.storke();

利用Canvas绘制一个图形,基本步骤:

 1.创建画布:<canvas></canvas>2.准备画笔(获取上下文对象):canvas.getContext('2d');3.开始路径规划:context.beginPath();4.移动起始点:context.moveTo(x,y);5.绘制线(矩形,圆形,图片...):context.lineTo(x,y)6.闭合路径:context.closePath();7.绘制路径:context.stroke();

绘制三角形:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><canvas id="cavsElem">您的浏览器不支持,请升级浏览器</canvas><script>var canvas=document.getElementById('cavsElem');//获得画布var context=canvas.getContext('2d');    //获得上下文canvas.width=900;canvas.height=600;//设置标签的属性宽高和边框canvas.style.border="1px,solid #000";//绘制三角形context.beginPath();//开始路径context.moveTo(100,100); //三角形,左顶点context.lineTo(300,100);//右顶点context.lineTo(300,500);//底部的点context.closePath();  //结束路径context.stroke();  //描边路径 // context.fillStyle='pink'; //设置填充颜色// context.fill();  //填充</script></body>
</html>

使用JavaScript为画布设置宽高和边框,然后通过坐标确定了三角形的3个点
规划了绘制路径,最后描边,绘制出来三角形,
context.fill()方法用来填充

加上填充样式:
context.fillStyle=‘pink’;
context.fill();

绘制矩形:

 context.strokeRect(x,y,width,height);  //绘制矩形边框context.fillRect(x,y,width,height);  //绘制填充矩形

x,y代表矩形起点的纵横坐标,width和height代表要绘制矩形的宽和高,
需要注意的是两个方法可以单独使用

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><canvas id="cavsElem">您的浏览器不支持,请升级浏览器</canvas><script>var canvas=document.getElementById('cavsElem');//获得画布var context=canvas.getContext('2d');    //获得上下文canvas.width=900;canvas.height=600;canvas.style.border="1px solid #000"; //设置标签的属性宽高和边框context.strokeRect(200,50,200,100);context.fillRect(200,200,200,100);//清除矩形// context.clearRect(100,100,200,150);</script></body>
</html>


清除矩形:
context.clearRect(x,y,width,height);
x,y代表要清除矩形起点的横纵坐标,width和height代表要清除矩形的宽高

上面代码加上 context.clearRect(100,100,200,150); 就是如下效果:

绘制圆形:

在context中可以使用arc()方法来绘制弧形和圆形

context.arc(x,y,radius,startAngle,engAngle,bAntiClockwise)
x,y代表arc的中心点,radius代表圆形半径的长度,startAngle代表以
starAngle开始(弧度),endAngle代表以endAngle结束(弧度),
bAntiClockwise代表是否是逆时针,设置true是逆时针,false则为顺时针

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><canvas id="cavsElem" width="900" height="600">您的浏览器不支持,请升级浏览器</canvas><script>var context=document.getElementById('cavsElem').getContext('2d'); //获得上下文var canvas=document.getElementById('cavsElem');canvas.style.border="5px solid #ccc"; //设置画布边框context.beginPath();//开始路径context.arc(100,100,100,0,2*Math.PI,true); //会致圆形,true为逆时针context.closePath(); //关闭路径context.fillStyle='pink';//设置填充颜色context.fill(); //填充//绘制弧形context.beginPath();//开始路径context.strokeStyle="#fff"; //设置描边颜色context.lineWidth=5; //设置线的粗细context.arc(100,100,25,Math.PI/6,5*Math.PI/6,false); //绘制弧形context.stroke(); //描边</script></body>
</html>

HTML5画布(canvas)绘制三角形,矩形,圆形相关推荐

  1. HTML5画布Canvas线段、矩形、弧形及贝塞尔曲线等简单图形绘制

    tip:有问题或者需要大厂内推的+我脉脉哦:丛培森 ٩( 'ω' )و HTML5中最有意思的就是这个canvas了 通过它我们可以画自己想要的图形 它也是十分重要的技术 应用于游戏.图表等等 或者绘 ...

  2. html+js:画布canvas + 绘制简单矩形

    html5支持canvas标签 canvas创建一个画布,通过.getContext方法创建一个CanvasRenderingContext2D对象进行图案的绘制,具体的方法可以前往HTML Canv ...

  3. html页面画一个矩形,使用HTML5 canvas绘制一个矩形的方法

    使用HTML5 canvas绘制一个矩形的方法 发布时间:2020-08-29 11:23:12 来源:亿速云 阅读:102 作者:小新 这篇文章将为大家详细讲解有关使用HTML5 canvas绘制一 ...

  4. HTML5画布(CANVAS)速查简表

    >HTML5画布(Canvas)元素 <canvas id="myCanvas" width="500" height="300" ...

  5. html5圆圈,javascript – 如何在HTML5画布中绘制带有文本的圆圈

    看起来很简单,可以在 HTML5画布中绘制圆圈和文本,但是我得到了非直观的行为.圆形画得漂亮漂亮,然后画出的圆圈越多,旧圆圈的形状越来越八角形.对我来说很奇怪-此外,文字从旧圆圈中消失,只出现在最后绘 ...

  6. html5 简单图片效果,【HTML5】Canvas绘制简单图片教程,

    [HTML5]Canvas绘制简单图片教程, 获取Image对象,new出来 定义Image对象的src属性,参数:图片路径 定义Image对象的onload方法,调用context对象的drawIm ...

  7. html中画布中怎么画一条直线,使用EaselJS在html5画布中绘制线条

    我对画架和HTML5本身非常新颖.我正试图在使用EaselJS的画布上绘制一条线. X坐标纵坐标固定为100,Y坐标纵坐标从数组列表中获得.我写的代码如下.可以请别人让我知道我哪里出错了?使用Ease ...

  8. 电脑PHP动画制作画板,三分钟HTML5画布(Canvas)动画教程

    此文下面的教程中将使用的是另外一个叫做kinetic的Web动画工具包. 它们都是开源的. 把鼠标放到上面的小丑脸上,然后移开,就会有如下效果. 第一步,画五官 这个小丑没有耳朵和眉毛,所以只剩下三官 ...

  9. html5画布作品,10款面向HTML5 画布(Canvas)的JavaScript库

    Processing.js Processing.js是一个开放的编程语言,在不使用Flash或Java小程序的前提下,可以实现程序图像.动画和互动的应用.Processing.js是轻量,易于了解掌 ...

  10. 解决Html5用canvas绘制不出来图片的问题

    转载自   解决Html5用canvas绘制不出来图片的问题 如果使用html5的ctx.drawImage(img,0,0);绘制不出来, 就改为: img.onload = function(){ ...

最新文章

  1. 将数据库的0和1显示为jsp页面的是和否
  2. OpenCV‘s Kalman filter卡尔曼滤波器的实例(附完整代码)
  3. C# 选中 DataGridView 控件中的行时显示不同的颜色
  4. java中content啥意思_JSTL标签中的body-content标签体内容输出格式的介绍
  5. idea数据库反向生成实体类_IntelliJ IDEA 的数据库管理工具实在太方便了
  6. 理论基础 —— 排序 —— 堆排序
  7. 得到当前python解释器的路径
  8. [数据结构]-循环队列
  9. 游戏服务器信息未初始化,游戏服务器初始化
  10. 元胞自动机生命游戏C语言并行实现
  11. 函数的基本知识点总结(附实例)
  12. 微信小程序点击事件(bindtap)传递参数的方法
  13. 惠普m227fdw引擎通信错误_惠普打印机HPM227提示耗材余量错误怎么办?
  14. Android studio断点调试源码
  15. 【代码大全2】第33章 个人性格
  16. hdu 1849 Rabbit and Grass Nim博弈
  17. python中的输出list中元素方法_python 输出所有列表元素的乘积
  18. 【AI TOP 10】马化腾:AI技术沦为网络黑产新工具;网易区块链项目被传夭折; 人工智能可以让狗跟人说话
  19. Scrapy Python爬虫实战:抓取知乎问题下所有回答!
  20. 如何更改您的Apple Watch表带(不花一吨)

热门文章

  1. SQLServer事务隔离级别
  2. 教您使用IntelliJ IDEA键盘快捷键~
  3. 软件测试和数据库试题(牛客网)
  4. 500款各领域机器学习数据集,总有一个是你要找的
  5. 学玩嵌入式开发的建议
  6. MULTISIM 基本元符号
  7. Manjaro 安装 ibus-rime 输入法
  8. 奶爸日记-如何引导小女孩
  9. mysql和mysqladmin_MySQL基础命令和mysqladmin命令的使用
  10. 阴阳师服务器维护结界卡暂停吗,阴阳师关于BUFF暂停 不能不知道的五件事