获取鼠标点击相对于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)通知适配器数据改变. 有时 ...
随机推荐
- docker 现实---中小企业docker环境结构(五)
docker对于中小企业,设定paas他没有足够的能量,没有必要为,个人二手sandbox实用性和小点.我个人觉得,中小企业可以使用docker要规范发展.测试.生产环境. 他画了一个简单的图表: d ...
- google多语言通信框架gRPC
google多语言通信框架gRPC系列(一)概述 gRPC概述 3/26/2016 9:16:08 AM 目录 一.概述 二.编译gRPC 三.C#中使用gRPC 四.C++中使用gRPC 一直在寻找 ...
- MVC区域 vs2013 mvc 搭建基架项
http://www.it165.net/pro/html/201404/12822.html
- Vector Clock理解
背景近期在重读"Dynamo: Amazon's Highly Available Key-value Store"(经典好文,推荐!).文章4.4 中聊到了Data Versio ...
- 阿里云server该数据光盘安装操作
猛击这里:阿里云server该数据光盘安装操作
- 图像特效——摩尔纹 moir
%%% Moir %%% 摩尔纹 clc; clear all; close all; addpath('E:\PhotoShop Algortihm\Image Processing\PS Algo ...
- JDK基本介绍
JDK这是Java Development Kit 缩写,中国被称为Java开发套件.由SUN该公司提供.这是Java应用程序开发提供了编译和执行环境,所有的Java写程序都依赖于它. JDK能够将J ...
- python进阶八_警告和异常
心情有点纠结,怎么说呢,倒不是由于其它学习上的事情,反而是由于生活上狗血的剧情逼着人偏离,渐行渐远,人跟人之间有误会也是正常的,可能是由于交流不够,彼此不够了解吧,希望能尽快度过这一段纠结的日子,简单 ...
- 解决mongodb设备mongod命令不是内部或外部的命令
1:安装 去mongodb的官网http://www.mongodb.org/downloads下载32bit的包 解压后会出现下面文件 在安装的盘C:下建立mongodb目录,拷贝bin目录到该目录 ...
- REST API 基于ACCESS TOKEN
REST API 基于ACCESS TOKEN 的权限解决方案 REST 设计原则是statelessness的,而且但客户端是APP时,从APP发起的请求,不是基于bowers,无法带相同的se ...