如何计算HTML5画布中矩形内每个小正方形drwan的中心像素(x,y)
我已经编写了一个代码,它将创建一个矩形,通过提供值,它将在该矩形中生成行和列,基本上是在该矩形中创建小正方形 代码可以在这里看到如何计算HTML5画布中矩形内每个小正方形drwan的中心像素(x,y),html,html5-canvas,Html,Html5 Canvas,我已经编写了一个代码,它将创建一个矩形,通过提供值,它将在该矩形中生成行和列,基本上是在该矩形中创建小正方形 代码可以在这里看到 示例 画 var x=50; 变量y=50; var w=150//宽度 var h=100//高度 var列=3; var行=3; var vnp=w/列//垂直下一点 var hnp=h/行//水平下一点 var canvas=document.getElementById(“t_canvas”); var ctx=canvas.getContext(“2d”)
示例
画
var x=50;
变量y=50;
var w=150//宽度
var h=100//高度
var列=3;
var行=3;
var vnp=w/列//垂直下一点
var hnp=h/行//水平下一点
var canvas=document.getElementById(“t_canvas”);
var ctx=canvas.getContext(“2d”);
$(文档).ready(函数(){
$('#draw')。单击(函数(){
drawVerticalLines(parseFloat(vnp));
提取水平线(hnp);
ctx.fillStyle=“#FF0000”;
ctx.冲程(x,y,w,h);
ctx.stroke();
});
});
函数调用(np){
var np=x+np//第一列的起点
而(np
我已经给出了行=3,列=3的值,因此它将创建一个类似于tic-tac-toe的正方形。我的要求是,当我在任何位置点击任何小正方形时,它应该给我该特定正方形的确切中心位置,我被卡在这里了,有什么算法可以做到这一点吗
谢谢,
Simer获得中心点的正确方法可以通过多种方式体现出来,但本质上这就是你需要做的:
var mousePos = getMousePos(canvas, evt), // get adjusted mouse position
gw = vnp * 0.5, // get center of one cell
gh = hnp * 0.5,
ix = ((mousePos.x - x) / vnp)|0, // get cell index clicked
iy = ((mousePos.y - y) / hnp)|0,
cx = ix * vnp + x + gw, // scale up to get pixel position
cy = iy * hnp + y + gh;
以下行的快速细分(仅显示x,y也显示):
mousePos.x-x
|0
切断了分数,因此我们得到了下一步需要的整数值:
((mousePos.x-x)/vnp)0
cx=ix*vnp
cx=ix*vnp+gw
ix
和iy
),可以与数组一起使用,以更轻松地检查游戏状态
var mousePos = getMousePos(canvas, evt), // get adjusted mouse position
gw = vnp * 0.5, // get center of one cell
gh = hnp * 0.5,
ix = ((mousePos.x - x) / vnp)|0, // get cell index clicked
iy = ((mousePos.y - y) / hnp)|0,
cx = ix * vnp + x + gw, // scale up to get pixel position
cy = iy * hnp + y + gh;
ix = ((mousePos.x - x) / vnp)|0
cx = ix * vnp + x + gw