用JS拖拽生成一个三角形
时间: 2023-06-20 19:04:46 浏览: 93
可以利用HTML5中的Canvas和JavaScript实现拖拽生成三角形的效果。
首先,在HTML中创建一个Canvas元素和一个按钮元素:
```html
<canvas id="myCanvas"></canvas>
<button onclick="drawTriangle()">生成三角形</button>
```
然后,在JavaScript中获取Canvas元素和绘制上下文2D,以及定义三角形的初始坐标和颜色:
```javascript
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
var triangle = {
x1: 100,
y1: 100,
x2: 150,
y2: 150,
x3: 200,
y3: 100,
color: "#ff0000"
};
```
接下来,定义一个函数用于绘制三角形:
```javascript
function drawTriangle() {
ctx.fillStyle = triangle.color;
ctx.beginPath();
ctx.moveTo(triangle.x1, triangle.y1);
ctx.lineTo(triangle.x2, triangle.y2);
ctx.lineTo(triangle.x3, triangle.y3);
ctx.closePath();
ctx.fill();
}
```
最后,定义一个拖拽函数,使用户可以通过鼠标拖拽三角形的任意一个点来改变三角形的大小和位置:
```javascript
function dragTriangle(event) {
var mouseX = event.clientX - canvas.offsetLeft;
var mouseY = event.clientY - canvas.offsetTop;
if (mouseX > triangle.x1 && mouseX < triangle.x1 + 10 && mouseY > triangle.y1 && mouseY < triangle.y1 + 10) {
triangle.x1 = mouseX;
triangle.y1 = mouseY;
drawTriangle();
} else if (mouseX > triangle.x2 && mouseX < triangle.x2 + 10 && mouseY > triangle.y2 && mouseY < triangle.y2 + 10) {
triangle.x2 = mouseX;
triangle.y2 = mouseY;
drawTriangle();
} else if (mouseX > triangle.x3 && mouseX < triangle.x3 + 10 && mouseY > triangle.y3 && mouseY < triangle.y3 + 10) {
triangle.x3 = mouseX;
triangle.y3 = mouseY;
drawTriangle();
}
}
canvas.addEventListener("mousedown", function (event) {
canvas.addEventListener("mousemove", dragTriangle);
});
canvas.addEventListener("mouseup", function (event) {
canvas.removeEventListener("mousemove", dragTriangle);
});
```
这样,当用户在Canvas上点击并拖拽三角形任意一个点时,就可以实现拖拽生成三角形的效果了。