gpt4 book ai didi

javascript - onmouse Canvas HTML5

转载 作者:太空宇宙 更新时间:2023-11-04 16:23:58 25 4
gpt4 key购买 nike

我正在尝试在 Canvas 上绘制我的鼠标路径,但我不知道出了什么问题,但它没有绘制任何东西。它适用于 context.fillRect() 但不适用于 ImageData。这是我的代码:

<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
<canvas id="myCanvas" width="600" height="600" style=" border-style: solid;"></canvas>
<script>

var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
var canvasWidth = canvas.width;
var canvasHeight = canvas.height;
var canvasData = context.getImageData(0, 0, canvasWidth, canvasHeight);

function drawPixel(x, y) {
var index = (x + y * canvasWidth) * 4;

canvasData.data[index] = 0; //Red
canvasData.data[index + 1] = 255; //Green
canvasData.data[index + 2] = 0; //Blue
canvasData.data[index + 3] = 1; //Alpha
}

function updateCanvas() {
context.putImageData(canvasData, 0, 0);
}

function getMousePos(canvas, evt) {
var rect = canvas.getBoundingClientRect();
return {
x: Math.round((evt.clientX-rect.left)/(rect.right-rect.left)*canvas.width),
y: Math.round((evt.clientY-rect.top)/(rect.bottom-rect.top)*canvas.height)
};
}

canvas.addEventListener('mousemove', function(evt) {
var mousePos = getMousePos(canvas, evt);
drawPixel(mousePos.x, mousePos.y);
updateCanvas();
}, false);
</script>
</body>
</html>

最佳答案

你会想要使用

canvasData.data[index + 3] = 255;

代替

canvasData.data[index + 3] = 1;

虽然 Canvas fillStyle 使用 0-1 之间的 alpha 值,但当您想要实际更新 Canvas 的原始数据时,alpha 值介于 0 到 255 之间。

关于javascript - onmouse Canvas HTML5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26962949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com