HTML5/Javascript -如何在画布上获得形状/图像的坐标
HTML5/Javascript - How to get the coordinates of a shape/image on the canvas?
假设我在画布上画了一个矩形。当然有某种内置的方法来获得XY坐标,以及矩形的尺寸?但在谷歌上搜索了一下之后,我什么也没找到。澄清一下,我说的不是画布元素本身的坐标,而是绘制到画布上的形状/图像。
如果你谈论的是2D画布绘图,那么绘图与屏幕坐标1:1映射,所以它只是<canvas>
的位置+绘图的位置。
澄清一下,在<canvas>
上绘制基本上只是改变画布的像素-在你绘制之后,你不能像引用html元素一样引用所绘制的对象。
画布是数字(= pixels = colors)的2D表格(数组)。当绘制到画布,你只是编辑这个表。当你在画布上绘制(=改变表格中的数字)时,你的调整坐标应该是什么?
如果你只画矩形,你可以为你的矩形定义坐标,你必须知道你在程序中的坐标,因为你刚刚画了它。
如果你想让你的图像被分成一些"对象"(形状),你应该使用SVG
基本上,你应该使用画布作为一种向屏幕输出图像的手段,剩下的逻辑直接进入为你的游戏/应用提供动力的JavaScript中。制作这类东西的最佳方法是创建对象并为其分配属性;最简单的形式如下:
function Player(x, y)
{
this.x = x;
this.y = y;
}
var examplePlayerObject = new Player(20, 20);
通过原型扩展这个对象,你可以创建一个具有完全相同功能的对象的多个副本;比如draw。在这个例子中,玩家可以画一个20px*20px的红色方块。
Player.prototype.draw = function()
{
context.clearRect(0, 0, canvas.width, canvas.height);
context.fillStyle = 'red';
context.fillRect(this.x, this.y, 20, 20);
}
然后,你应该有一个更新步骤,用一些方法来清除屏幕上的内容,并重新绘制已经更改的部分。
function animationStep()
{
examplePlayerObject.x++;
examplePlayerObject.y++;
examplePlayerObject.draw();
}
这个动画步骤应该每帧运行;查看requestAnimationFrame以获得平滑动画。Paul Irish为较旧的浏览器提供了一个很好的shim。在该功能的末尾添加requestAnimationFrame(animationStep)
,你将有一个红色方块在屏幕上缓慢移动。好运!
- 点击(右键点击)使用传单地图库获取图像覆盖的像素坐标
- 使用D3.js和GeoJson在地图上的某些坐标上设置一个小图像
- 以编程方式将fabric-js-canvas的图像替换为hq图像,并重新计算其他对象的坐标和大小
- 获取框内图像的坐标
- 从两个标记中查找静态地图图像坐标
- 获取画布中图像内的鼠标坐标
- 如何获取画布中图像元素的坐标
- 单击图像,获取坐标并将其保存在数据库JavaScript和Rails中
- 如何在上传之前获取图像的裁剪坐标
- 通过指向 X、Y 坐标来移动图像
- 图像可拖动到特定的 x,y 坐标
- 不同浏览器的图像映射坐标
- 如何在使用文本对齐时调整图像大小并保持图像映射坐标:居中
- 将调整大小的图像坐标映射回原始图像坐标
- 传单自定义图像坐标
- 如何使用fabric js中的image.centerObject()将对象居中后获得图像坐标
- 使用图像坐标裁剪图像
- 获取鼠标移动的图像坐标
- 我如何获得图像坐标鼠标悬停与three.js
- 用css中的变量控制精灵图像坐标