gpt4 book ai didi

javascript - Canvas 绘制错误(HTML5 和 JavaScript)

转载 作者:行者123 更新时间:2023-12-02 19:34:52 28 4
gpt4 key购买 nike

我通常可以研究我的问题并从别人的错误中得到答案,但这次我找到答案的时间相当不寻常。这个概念是您可以对 16x16 网格上的 32x32 “像素”进行着色。我的完整代码如下:

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="jscolor.js"></script>
<title>Tiles</title>
</head>
<body>
<canvas id="canvas" height="512" width="512" onclick="draw(window.event)">
Oops, you don't have Canvases
</canvas>
<input type="text" value="000000" class="color"></input>
<script type="text/javascript">
var draw_a = document.getElementById("canvas").getContext("2d");
function draw(e) {
draw_a.fillStyle = "#" + document.getElementById("color").value;
draw_a.fillRect(
math.floor( e.clientX / 16 ),
math.floor( e.clientX / 16 ),
32,
32
);
}
draw_a.fillStyle = "#000000";
draw_a.fillRect( 0 , 0 , 512 , 512 );
</script>
</body>
</html>

最佳答案

您正在对点击坐标进行除法和舍入,但不会再次将值相乘以映射到 Canvas 坐标 - 点之间也应该有 32 个像素,而不是 16 个像素。

也没有math.floor这样的函数,它应该是Math.floor:

var x = 32 * Math.floor(e.clientX / 32);
var y = 32 * Math.floor(e.clientY / 32);
draw_a.fillRect(x, y, 32, 32);

最后,您的颜色输入的 id 应该是 color,而不是 class

工作演示(至少在 Chrome 中)http://jsfiddle.net/alnitak/VJNdR/

关于javascript - Canvas 绘制错误(HTML5 和 JavaScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11041684/

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