废话不多说直接上代码:
需要的人,直接把一下代码拷贝过去就行。
PS:该demo是单项的绘图,如果需要实现绘制多个矩形,请自行增加对应的操作。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>矩形</title>
</head>
<style>
.cus-canvas {
background: rgb(50, 204, 243);
}
</style>
<body>
<!-- 矩形 -->
<div>
<canvas id="canvas" class="cus-canvas" width="800" height="600"></canvas>
</div>
</body>
<script>
// 对象:
const canvas = document.getElementById('canvas');// 获取DOM对象
const ctx = canvas.getContext('2d');// 创建画布对象
// 参数:
var cw = canvas.width, ch = canvas.height; //画布宽高 - 移动距离的限制条件
var list = [] //矩形点坐标数组
//矩形的宽高
var rw;
var rh;
var rect; //矩形参数
var mouseDown = false; //是否选中反应区
var deltaX = 0;
var deltaY = 0;
// 按下,判断点是否在区域内 在区域内,激活选中反应区
canvas.onmousedown = function (e) {
if (list.length == 2) {
/** 获取视口左边界与canvas左边界的距离 加上 鼠标点击位置与canvas左边界的长度,这个值是相对移动过程中不变的值 */
deltaX = e.clientX - rect.x;
deltaY = e.clientY - rect.y;
//获取点击点的点坐标