客户端区域坐标转换为 Canvas 坐标
来源:互联网 发布:section软件 编辑:程序博客网 时间:2024/05/29 03:19
通过 MouseEvent.clientX和 MouseEvent.clientY 可以获得鼠标在浏览器客户端区域的坐标。借助 Element.getBoundingClientRect()方法来实现客户端区域坐标与 canvas 坐标之间的转换。
function windowToCanvas (canvas, x, y) { var bbox = canvas.getBoundingClientRect(); return { x : x - bbox.left, y : y - bbox.top };}
上述方法将 canvas 元素的边界框的左上角点的坐标从窗口坐标中减去,从而得到鼠标在 canvas元素区域中的坐标。
但是 canvas元素本身的大小与元素绘图表面的大小可能存在不相等的情况。
对于 canvas 元素,在 HTML中设置 <canvas> 标签的 width属性和 height 属性实际上是同时修改了元素本身的大小与元素绘图表面的大小;而通过CSS来设定 canvas元素的大小实际上只修改了元素本身的大小。
当元素本身的大小与元素绘图表面的大小不一致时,元素的绘图表面会进行缩放来适应元素本身的大小。
在获取鼠标的 canvas坐标时,实际上是要获取绘图表面的坐标,因此要对坐标进行缩放。
function windowToCanvas (canvas, x, y) { var bbox = canvas.getBoundingClientRect(); return { x : (x - bbox.left) * (canvas.width / bbox.width), y : (y - bbox.top) * (canvas.height / bbox.height) };}
上述方法获取了鼠标在 canvas 元素区域中的坐标之后对坐标进行了缩放,从而获得了鼠标相对于 canvas元素绘图表面的坐标。
0 0
- 客户端区域坐标转换为 Canvas 坐标
- 经纬度坐标转换为屏幕坐标
- opengl 窗口坐标转换为物体坐标
- 经纬度坐标转换为屏幕坐标
- 经纬度坐标转换为屏幕坐标
- 经纬度坐标转换为屏幕坐标
- (转)经纬度坐标转换为屏幕坐标
- 【未完成】GPS坐标转换为平面坐标
- 经纬度坐标转换为屏幕坐标
- GPS坐标转换为百度地图坐标
- 将GPS坐标转换为火星坐标
- GPS坐标转换为百度坐标,百度坐标的转换,原始坐标转百度坐标
- ViewRootImp内部canvas坐标转换的问题
- 世界转换为节点坐标
- 经纬度转换为屏幕坐标
- 极坐标转换为直角坐标
- 游戏地图坐标与客户端坐标转换模型
- 如何把经纬度坐标转换为屏幕显示坐标?
- Android DDMS
- 计算机中补码一些认识
- 题目1075:斐波那契数列
- 练习2.1-4 (字符串实现任意长度的数之和)
- [Android Studio] 关于*.SO压缩问题
- 客户端区域坐标转换为 Canvas 坐标
- 微信资源混淆AndResGuard原理
- LeetCode 11-14
- Ugly Number
- Git使用
- 题目1076:N的阶乘
- 潮汕“木塞”(“木虱”)概率计算
- mysql命令行,多行命令时如何取消/返回修改前边的命令
- 数据库设计时列变行思想