canvas画布

系统管理员 2023-08-17 16:25 207阅读 0赞

canvas标签

  1. <canvas></canvas>

接下来使用支持H5的浏览器打开该页面,将会看到如下内容:
在这里插入图片描述
canvas画布标签兼容处理
如果浏览器不兼容,最好进行友好提示,提示内容只有在浏览器不支持时才显示。

  1. <canvas>您的浏览器不支持canvas标签</canvas>

结果分析
由上述结果可以分析出,在H5中,canvas标签本身并没有任何行为,仅仅只是在页面上占用指定大小的页面空白空间。canvas标签就相当于一块空白的画布,还需要使用js提供的API编写相应的代码从而在这块画布上绘制出图形。
通俗理解
canvas就是一块画布,可以使用js当画笔在上面绘画,可以显示在网页上。

canvas标签常用属性






















属性 默认值
id 无(为画布起一个id名称)
height 300(设置canvas的高度)
width 150(设置canvas的宽度)

注意

  1. 如果浏览器不兼容,也可以使用flash等手段进行优雅降级
  2. 不能使用CSS样式控制canvas元素的宽高,否则会导致绘制的图形拉伸
  3. 重新设置canvas标签的宽高属性会导致画布擦除所有的内容
  4. 可以给canvas画布设置背景色

画布宽高注意事项

  1. canvas画布是一个行内块级元素,该元素默认的宽高为300*150,可以通过元素的width属性和height属性改变默认的宽高。
  2. 不能使用CSS样式控制canvas元素宽高,否则会导致绘制的图形拉伸
  3. 原因:因为canvas的默认高度是300*150,所以如果使用css为canvas设置width和height,会导致canvas绘制的图像被压缩。所以开发中使用width与height属性来设置canvas的宽高,而不是通过CSS。

canvas的平面坐标系
在这里插入图片描述
canvas的角度坐标系
在这里插入图片描述

图形绘制基本步骤:

  • 第1步:获取画布对象:var canvas = document.querySelector(’…’);
  • 第2步:获得上下文即画笔:var ctx = canvas.getContext(‘2d’);
  • 第3步:记录绘制起始点:ctx.moveTo(sx, sy);
  • 第4步:绘制线至终点:ctx.lineTo(dx, dy);
  • 第5步:封闭路径:ctx.closePath();
  • 第6步:绘制描边确定直线中起点和端点的连线:ctx.stroke();

JavaScript脚本中< canvas >常用操作


































操作 JavaScript代码
获取画布 var canvas=document.getElementById(“canvas”);
获取画笔 var ctx=canvas.getContext(“2d”);
设置画布宽度 canvas.width=600;
设置画布高度 canvas.height=400;
获取画布宽度 var canvasWidth=canvas.offsetWidth;
获取画布高度 var canvasHeight=canvas.offsetHeight;
基本图形绘制—矩形

在这里插入图片描述

  1. <canvas id="canvas">您的浏览器不支持canvas标签</canvas>
  2. <script>
  3. //1、获取画布对象
  4. var canvas = document.querySelector("#canvas");
  5. //2、获得上下文,即画笔
  6. var ctx = canvas.getContext("2d");
  7. //重新设置标签的属性宽高,注意:不要用canvas.style.height
  8. canvas.width = 300;
  9. canvas.height = 250;
  10. // 绘制矩形
  11. ctx.beginPath();
  12. ctx.strokeRect(10,10,250,200);//绘制边线矩形
  13. ctx.rect(15,15,200,150);//绘制普通矩形
  14. // (rect()方法只是规划了矩形的路径,并没有填充和描边,需要单独描边或填充)
  15. //快速创建一个描边的矩形
  16. ctx.fillStyle = "lightblue";//填充前,可以设置填充的颜色
  17. ctx.fillRect(20,20,180,100);//绘制填充矩形;
  18. //清除矩形
  19. ctx.clearRect(25,25,50,50);
  20. ctx.stroke();//绘制
  21. </script>
案例1:tree树

在这里插入图片描述

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>tree</title>
  6. <style>
  7. *{
  8. margin: 0;
  9. padding: 0;
  10. }
  11. canvas{
  12. border: 1px solid gray;
  13. }
  14. </style>
  15. </head>
  16. <body>
  17. <canvas id="canvas">您的浏览器不支持canvas标签</canvas>
  18. <script>
  19. // 1、获取画布
  20. var canvas = document.querySelector("#canvas");
  21. // 2、获取下文对象CanvasRenderingContext2D,即画笔
  22. var ctx = canvas.getContext("2d");
  23. canvas.width = 500;
  24. canvas.height = 600;
  25. // 3、绘制直线
  26. ctx.beginPath();//开始绘制,开始路径规划
  27. ctx.moveTo(250,50);//绘制直线的起点
  28. ctx.lineTo(110,150);//绘制直线的端点
  29. ctx.lineTo(200,150);
  30. ctx.lineTo(80,250);
  31. ctx.lineTo(200,250);
  32. ctx.lineTo(50,350);
  33. ctx.lineTo(230,350);
  34. ctx.lineTo(230,480);
  35. ctx.lineTo(270,480);
  36. ctx.lineTo(270,350);
  37. ctx.lineTo(450,350);
  38. ctx.lineTo(300,250);
  39. ctx.lineTo(420,250);
  40. ctx.lineTo(300,150);
  41. ctx.lineTo(390,150);
  42. // ctx.lineTo(250,50);
  43. ctx.closePath();//封闭路径
  44. ctx.lineWidth = 1.0;//设置线宽
  45. ctx.strokeStyle = "skyblue";//设置线的颜色
  46. ctx.stroke();//绘制
  47. ctx.fillStyle = "skyblue";//设置填充颜色
  48. ctx.fill();//填充图形
  49. </script>
  50. </body>
  51. </html>
案例2:umbrella雨伞

在这里插入图片描述

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>雨伞</title>
  6. <style>
  7. *{
  8. margin: 0;
  9. padding: 0;
  10. }
  11. #canvas{
  12. border: 1px solid gray;
  13. }
  14. </style>
  15. </head>
  16. <body>
  17. <canvas id="canvas"></canvas>
  18. <script>
  19. //1、获取画布
  20. var canvas = document.querySelector("#canvas");
  21. //2、获取上下文对象CanvasRenderingContext2D,即画笔
  22. var umbrella = canvas.getContext("2d");
  23. canvas.width = 400;
  24. canvas.height = 400;
  25. //3、绘制直线
  26. umbrella.beginPath();//开始绘制,开始路径规划(开始了一个新状态,新线径)
  27. umbrella.arc(200,150,100,0,Math.PI,true);
  28. umbrella.closePath();
  29. umbrella.lineWidth = 3.0;//设置线宽
  30. umbrella.strokeStyle = "#ff5857";//设置线的颜色
  31. umbrella.stroke();//绘制
  32. umbrella.fillStyle = "#ff5857"
  33. umbrella.fill();
  34. umbrella.beginPath();//开始绘制,开始路径规划(开始了一个新状态,新线径)
  35. /*这里着重强调下 beginPath: 核心的作用是将不同绘制的形状进行隔离,
  36. *每次执行此方法,表示重新绘制一个路径,
  37. *跟之前的绘制的墨迹可以进行分开样式设置和管理。
  38. *新状态可以继承之前状态的样式,但是当前状态设置的所有样式只能用于当前状态。
  39. */
  40. umbrella.moveTo(200,150);
  41. umbrella.lineTo(200,280);
  42. umbrella.arc(180,285,20,0,Math.PI,false);
  43. umbrella.lineWidth = 3.0;//设置线宽
  44. umbrella.strokeStyle = "#ff5857";//设置线的颜色
  45. umbrella.stroke();//绘制
  46. </script>
  47. </body>
  48. </html>

发表评论

表情:
评论列表 (有 0 条评论,207人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Android Canvas画布

    在本教程中,我们将讨论 Android 的一个非常重要的部分,即 Canvas。这是每个开发人员都喜欢远离的领域。本教程的目的是让您更加了解和轻松使用 Android Canv

    相关 canvas画布

    canvas标签 <canvas></canvas> 接下来使用支持H5的浏览器打开该页面,将会看到如下内容: ![在这里插入图片描述][watermark

    相关 canvas-画布

    概述 HTML5 的 canvas 元素用于定义画布,是一个矩形区域,默认颜色为白色,默认大小为 300 \ 150;通过 JavaScript 可以在该区域上绘制图像

    相关 html5 canvas 画布基础

    canvas 画布基础 学习整理的笔记,内容丰富 有绘制矩形,绘制线条,绘制二次贝塞尔曲线,绘制弧线等。知识点在代码注释中 效果图: ![Center][]