获取鼠标点击相对于Canva位置的2种方法
如果给Canvas添加 onmousedown事件,获取到的鼠标位置都是相对于当前文档的位置(x,y):
aaarticlea/png;base64,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MqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pZlggAzbMqT3pV0AsL1TL++K9L60U/+VAThLp17eFel9aaf+KwNwlk69vCvS+9JO/VcG4CydenlXpPelnfqvDMBZOvXyrkjvAaA/vQeA/vQeAPrTewDoT+8BoD+9B4D+9B4A+tN7AOhP7wGgP70HgP70HgD603sA6E/vAaA/vQeA/vQeAPrTewDoT+8BoD+9B4D+9B4A+tN7AOhP7wGgP70HgP70HgD603sA6E/vAaA/vQeA/vQeAPrTewDoT+8BoD+9B4D+9B4A+tN7AOhP7wGgP70HgP70HgD603sA6E/vAaA/vQeA/vQeAPrTewDoT+8BoD+9B4D+9B4A+tN7AOhP7wGgP70HgP70HgD603sA6E/vAaA/vQeA/vQeAPrTewDoT+8BoD+9B4D+9B4A+tN7AOhP7wGgP70HgP70HgD603sA6E/vAaA/vQeA/vQeAPrTewDoT+8BoD+9B4D+9B4A+tN7AOhP7wGgP70HgP70HgD603sA6E/vAaA/vQeA/vQeAPrTewDoT+8BoD+9B4D+9B4A+tN7AOhP7wGgP70HgP70HgD603sA6E/vAaA/vQeA/vQeAPrTewDoT+8BoD+9B4D+9B4A+tN7AOhP7wGgP70HgP70HgD603sA6E/vAaA/vQeA/vQeAPrTewDoT+8BoD+9B4D+9B4A+tN7AOhP7wGgP70HgP70HgD603sA6E/vAaA/vQeA/vQeAPrTewDoT+8BoD+9B4D+9B4A+tN7AOhP7wGgP70HgP70HgD603sA6O+ovXccx3Ecp8LRe8dxHMfpf/TecRzHcfofvXccx3Gc/kfvHcdxHKf/OXDvAYCzoPcA0J/eA0B/eg8A/f0/i/7dHSExcUEAAAAASUVORK5CYII=" alt="" />
第一种转换:
(x-x1,y-y1)
x,y为鼠标点击位置,getBoundingClientRect方法是canvas自带的获取可绘画区域的位置信息的函数
function windowToCanvas(x, y) {
var bbox = canvas.getBoundingClientRect();
return { x: x - bbox.left * (canvas.width / bbox.width),
y: y - bbox.top * (canvas.height / bbox.height) };
}
第二种更加简洁:
canvas.onmousedown = function (e) {
//var loc = windowToCanvas(e.clientX||e.x, e.clientY||e.y);
var x=e.layerX||e.offsetX;
var y=e.layerY||e.offsetY;
e.preventDefault(); // prevent cursor change
saveDrawingSurface();
mousedown.x = loc.x;
mousedown.y = loc.y;
dragging = true;
};
只有firefox支持layerX,其他浏览器支持标准的offsetX
获取鼠标点击相对于Canva位置的2种方法的更多相关文章
- js获取鼠标点击事件的相对位置
<html><head><title>位置</title><script language="javascript" type ...
- js 获取页面高度和宽度(兼容 ie firefox chrome),获取鼠标点击位置
<script> //得到页面高度 var yScroll = (document.documentElement.scrollHeight >document.documentEl ...
- Listbox与dataGridView的获取鼠标点击事件的区别!!!
lisxian.SelectedIndex = index; Listbox获取鼠标的代码!!!! DataGridViewRow currenRow = this.dgvxian3.Rows[ind ...
- JavaScript获取鼠标位置的三种方法
在一些DOM操作中我们经常会跟元素的位置打交道,鼠标交互式一个经常用到的方面,令人失望的是不同的游览器下会有不同的结果甚至是有的游览器下没结果,这篇文章就鼠标点击位置坐标获取做一些简单的总结. 获取鼠 ...
- JavaScript 获取鼠标点击位置坐标
在一些DOM操作中我们经常会跟元素的位置打交道,鼠标交互式一个经常用到的方面,令人失望的是不同的浏览器下会有不同的结果甚至是有的浏览器下没结果,这篇文章就上鼠标点击位置坐标获取做一些简单的总结,没特殊 ...
- html5中canvas的使用 获取鼠标点击页面上某点的RGB
1.html5中的canvas在IE9中可以跑起来.在IE8则跑不起来,这时候就需要一些东西了. 我推荐这种方法,这样显得代码不乱. <!--[if lt IE9]> <script ...
- python获取字母在字母表对应位置的几种方法及性能对比较
python获取字母在字母表对应位置的几种方法及性能对比较 某些情况下要求我们查出字母在字母表中的顺序,A = 1,B = 2 , C = 3, 以此类推,比如这道题目 https://project ...
- C#中实现输入汉字获取其拼音(汉字转拼音)的2种方法
主要介绍了C#中实现输入汉字获取其拼音(汉字转拼音)的2种方法,本文分别给出了使用微软语言包.手动编码实现两种实现方式,需要的朋友可以参考下 本文刚发布时,只写了一个实现方式,使用的是微软的语言包,但 ...
- Android 记录和恢复ListView滚动的位置的三种方法
本文主要介绍记录和恢复listView滚动位置的3种方法(1)记录listView滚动到的位置的坐标(推荐)(2)记录listView显示在屏幕上的第一个item的位置(3)通知适配器数据改变. 有时 ...
随机推荐
- [IOS]UIWebView实现保存页面和读取服务器端json数据
如何通过viewView保存访问过的页面?和如何获取并解析服务器端发送过来的json数据?通过一个简单的Demo来学习一下吧! 操作步骤: 1.创建SingleViewApplication应用,新建 ...
- 【android自己定义控件】自己定义View属性
1.自己定义View的属性 2.在View的构造方法中获得我们自己定义的属性 3.重写onMesure 4.重写onDraw 3这个步骤不是必须,当然了大部分情况下还是须要重写的. 1.自己定义Vie ...
- Oracle连接池
原由:许多用户可能在查询相同的数据库以获取相同的数据.在这些情况下,可以通过使应用程序共享到数据源的连接来提高应用程序的性能.否则,让每个用户打开和关闭单独的连接的开销会对应用程序性能产生不利影响.这 ...
- Linux系统部署规范v1.0
Linux系统部署规范v1.0 目的: 1.尽可能减少线上操作: 2.尽可能实现自动化部署: 3.尽可能减少安装服务和启动的服务: 4.尽可能使用安全协议提供服务: 5.尽可能让业务系统单一: 6.尽 ...
- KSImageNamed-Xcode
KSImageNamed-Xcode 非常的给力的XCODE图片浏览插件; What is this? Can't remember whether that image you just add ...
- WebKit介绍和总结(一)
一 . WebKit 简单介绍 Webkit 是一个开放源码的浏览器引擎 (web browser engine) ,最初的代码来自 KDE 的 KHTML 和 KJS( 均开放源码 ) . 苹果公司 ...
- MIT 操作系统实验 MIT JOS lab2
MIT JOS lab2 首先把内存分布理清楚,由/boot/main.c可知这里把kernel的img的ELF header读入到物理地址0x10000处 这里能够回想JOS lab1的一个小问.当 ...
- PocketSphinx语音识别系统语言模型的训练和声学模型的改进
PocketSphinx语音识别系统语言模型的训练和声学模型的改进 zouxy09@qq.com http://blog.csdn.net/zouxy09 关于语音识别的基础知识和sphinx的知识, ...
- MySql模糊查询like通配符简介
%代表随意多个字符 _代表一个字符 在 MySQL中.SQL的模式缺省是忽略大写和小写的 正则模式使用REGEXP和NOT REGEXP操作符. "."匹配不论什么单个的字符.一 ...
- CentOS 安装memcached
一,安装libevent 安装位置 /usr/lib #tar -zxvf libevent-2.0.21-stable.tar.gz # cdlibevent-2.0.21 # ./configur ...