使用 2 个滑块输入生成一个矩形 (Canvas)。在新输入上,删除矩形
Use 2 Slider inputs to generate a Rectangle (Canvas). On new Inputs, delete the Rectangle
我的 HTML 中有 2 个滑块,可以让我获得他们想要在我的 Canvas 中做的所需的矩形宽度和高度。它工作正常,但我不知道如何删除我之前得到的一个矩形。我用一个布尔值尝试了它,但它变得一团糟,因为两个滑块都在同一个函数中,所以当我移动其中一个滑块时,我不能移动另一个。
这是我绘制矩形的函数:
function drawBackgroundBig(): void {
if (canvasSet == false) {
let newHeight: number = parseInt(heightSlider.value);
// console.log(heightSlider.value);
let newWidth: number = parseInt(widthSlider.value);
// console.log(widthSlider.value);
crc2.fillStyle = "red";
crc2.fillRect(0, 0, newWidth, newHeight);
crc2.stroke();
crc2.save();
newHeight = height;
newWidth = width;
}
else {
crc2.clearRect(0, 0, width, height);
crc2.save();
}
}
我只是建议你把 if 和 else 的内容颠倒一下。放
crc2.clearRect(0, 0, 宽度, 高度);
crc2.save();
在你的函数的开头,你应该得到你要找的东西。
let ctx=can.getContext("2d");
let prevWidth=0;
let prevHeight = 0;
let drawBackgroundBig = () => {
ctx.clearRect(0, 0, prevWidth, prevHeight);
ctx.save();
let newHeight = parseInt(myRange1.value);
// console.log(heightSlider.value);
let newWidth = parseInt(myRange2.value);
// console.log(widthSlider.value);
ctx.fillStyle = "red";
ctx.fillRect(0, 0, newWidth, newHeight);
ctx.stroke();
ctx.save();
prevWidth = newWidth;
prevHeight = newHeight;
}
myRange1.onchange=()=>{drawBackgroundBig();}
myRange2.onchange=()=>{drawBackgroundBig();}
<canvas id="can" height=300 width=300 ></canvas>
<div>
<input type="range" min="1" max="100" value="50" id="myRange1">
<input type="range" min="1" max="100" value="50" id="myRange2">
</div>
我的 HTML 中有 2 个滑块,可以让我获得他们想要在我的 Canvas 中做的所需的矩形宽度和高度。它工作正常,但我不知道如何删除我之前得到的一个矩形。我用一个布尔值尝试了它,但它变得一团糟,因为两个滑块都在同一个函数中,所以当我移动其中一个滑块时,我不能移动另一个。
这是我绘制矩形的函数:
function drawBackgroundBig(): void {
if (canvasSet == false) {
let newHeight: number = parseInt(heightSlider.value);
// console.log(heightSlider.value);
let newWidth: number = parseInt(widthSlider.value);
// console.log(widthSlider.value);
crc2.fillStyle = "red";
crc2.fillRect(0, 0, newWidth, newHeight);
crc2.stroke();
crc2.save();
newHeight = height;
newWidth = width;
}
else {
crc2.clearRect(0, 0, width, height);
crc2.save();
}
}
我只是建议你把 if 和 else 的内容颠倒一下。放 crc2.clearRect(0, 0, 宽度, 高度); crc2.save(); 在你的函数的开头,你应该得到你要找的东西。
let ctx=can.getContext("2d");
let prevWidth=0;
let prevHeight = 0;
let drawBackgroundBig = () => {
ctx.clearRect(0, 0, prevWidth, prevHeight);
ctx.save();
let newHeight = parseInt(myRange1.value);
// console.log(heightSlider.value);
let newWidth = parseInt(myRange2.value);
// console.log(widthSlider.value);
ctx.fillStyle = "red";
ctx.fillRect(0, 0, newWidth, newHeight);
ctx.stroke();
ctx.save();
prevWidth = newWidth;
prevHeight = newHeight;
}
myRange1.onchange=()=>{drawBackgroundBig();}
myRange2.onchange=()=>{drawBackgroundBig();}
<canvas id="can" height=300 width=300 ></canvas>
<div>
<input type="range" min="1" max="100" value="50" id="myRange1">
<input type="range" min="1" max="100" value="50" id="myRange2">
</div>