《智能前端技术与实践》——第 2 章 前端开发基础 ——2.2 HTML基础——2.2.2 常用标签 (下)
5.canvas> 标签
Canvas API 提供了一种通过 JavaScript 和HTML 的canvas> 元素来绘制图形的方式,它可
以用于动画、游戏画面、数据可视化、图片编辑及实时视频处理等方面的内容。使用canvas> 大
概可以分为两个步骤。
首先,在 HTML 文档中定义canvas> 标签,如代码清单 2-12 所示。
代码清单 2-12
canvas width="500" height="500" style="border: 1px solid red" id="canvas">
/c
anvas>
canvas> 标签只有两个属性——width 和 height。当没有设置宽度和高度的时候,canvas>
会初始化尺寸为 300×150 的矩形。
然后,获取canvas> 对象的上下文并判断 getContext()方法是否存在,如代码清单 2-13所示。
代码清单 2-13
var canvas = document.getElementById("canvas")
if (canvas.getContext){
var ctx = canvas.getContext("2d");
}
最后,在页面中分别绘制圆形、直线和矩形框,如代码清单 2-14 所示。
代码清单 2-14
!DOCTYPE html>
html lang="en">
head>
meta charset="UTF-8">
title>
canvas Demo/title>
/head>
body>
canvas width="500" height="500" style="border: 1px solid red" id="canvas">
/c
anvas>
script>
var canvas = document.getElementById("canvas")
if (canvas.getContext){
var ctx = canvas.getContext("2d");
//画圆
ctx.beginPath()
ctx.moveTo(250,100)
ctx.arc(250,100,10,0,2*Math.PI)
ctx.fillStyle = "blue"
ctx.fill()
ctx.closePath()
//画直线
ctx.beginPath()
ctx.moveTo(100,250)
ctx.lineTo(400,250)
ctx.strokeStyle = "green"
ctx.stroke()
ctx.closePath()
//画矩形
ctx.beginPath()
ctx.rect(100,300,300,100)
ctx.strokeStyle = "aqua"
ctx.stroke()
ctx.closePath()
}
/script>
/body>
/html>
运行结果如图 2-21 所示。
接下来,我们介绍上述代码中用到的相关 API 方法。
• beginPath():通过清空子路径列表开始一条新的路径,其调用方法为 CanvasRenderingContext2D.beginPath()。
• closePath():将笔点返回当前子路径的起始点,并从当前点到起始点绘制一条直线,如果图形已经是封闭图形或仅有一个点,此方法不做任何操作。
• moveTo(x,y):将一条新的子路径的起点移动到(x,y)。
• lineTo(x,y):使用直线连接子路径的终点与(x,y)。
• arc(x,y,radius,startAngle,endAngle,anticlockwise):绘制圆心坐标为(x,y)、半径为 radius的弧,根据 anticlockwise(默认为顺时针)指定的方向从 startAngle 开始绘制,到endAngle 结束。
• stroke():通过线条来绘制图形轮廓。
• fill()方法:根据填充路径的内容区域生成实心的图形。
另外,我们可以通过指定 strokeStyle 的值设置图形轮廓的颜色;通过指定 fillStyle 的值设置图形的填充颜色,默认值均为黑色(#000000)。
最后,结合代码清单 2-15,介绍指针设备(如鼠标指针)在canvas> 对象中移动时触发的事件 mousemove。
代码清单 2-15
!DOCTYPE html>
html lang="en">
head>
meta charset="UTF-8">
title>
你画我猜(MNIST 手写数字版)canvas 示例/title>
/head>
body>
canvas width="500" height="500" style="border: 1px solid red" id="canvas">
/c
anvas>
button id="clear">
清除画布/button>
script>
var canvas = document.getElementById("canvas")
var oclear = document.getElementById("clear")
if (canvas.getContext){
var ctx = canvas.getContext("2d");
canvas.onmousemove = (e) =>
{
if(e.buttons == 1){
ctx.fillStyle = "black"
ctx.fillRect(e.offsetX,e.offsetY,5,5)
}
}
oclear.onclick = () =>
{
ctx.clearRect(0,0,500,500)
}
}
/script>
/body>
/html>
运行结果如图 2-22 所示。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 《智能前端技术与实践》——第 2 章 前端开发基础 ——2.2 HTML基础——2.2.2 常用标签 (下)
本文地址: https://pptw.com/jishu/301019.html
