背景:我有一个

HTML5画布,我画了一个图像.现在,当图像首次加载时,它以100%的比例加载.图像是5000 x 5000.画布大小是600 x 600.所以onload,我只看到前600 x像素和600 y像素.我可以选择在画布上缩放和翻译图像.

我的问题:我试图找出一种算法,该算法在考虑缩放和平移的同时,返回鼠标点击相对于图像的像素坐标,而不是画布.

我知道已经有很多话题,但我见过的都没有用.我的问题是当我有多个翻译和缩放时.我可以缩放一次并获得正确的坐标,然后我可以再缩放并获得正确的坐标,但是一旦我缩放或缩放多次,坐标就会关闭.

这是我到目前为止所拥有的.

//get pixel coordinates from canvas mousePos.x, mousePos.y

(mousePos.x - x_translation)/scale //same for mousePos.y

annotationCanvas.addEventListener('mouseup',function(evt){

dragStart = null;

if (!dragged) {

var mousePos = getMousePos(canvas, evt);

var message1 = " mouse x: " + (mousePos.x) + ' ' + "mouse y: " + (mousePos.y);

var message = " x: " + ((mousePos.x + accX)/currentZoom*currentZoom) + ' ' + "y: " + ((mousePos.y + accY)/currentZoom);

console.log(message);

console.log(message1);

console.log("zoomAcc = " + zoomAcc);

console.log("currentZoom = " + currentZoom);

ctx.fillStyle="#FF0000";

ctx.fillRect((mousePos.x + accX)/currentZoom, (mousePos.y + accY)/currentZoom, -5, -5);

}

},true);

//accX and accY are the cumulative shift for x and y respectively, and xShift and xShift yShift are the incremental shifts of x and y respectively

其中当前缩放是累积缩放.和zoomAcc是此时缩放的单次迭代.所以在这种情况下,当我放大时,zoomAcc始终为1.1,而currentZoom = currentZoom * zoomAcc.

为什么这是错的?如果有人可以告诉我如何跟踪这些转换,然后将它们应用到mousePos.x和mousePos.y我将不胜感激.

谢谢

更新:

在图像中,绿点是我点击的地方,红点是我使用markE的方法计算该点的计算的地方. m值是markE方法中的矩阵值.

html5获得画布上坐标,javascript – HTML5画布在缩放和翻译后获取坐标相关推荐

  1. html5 txt文件上传,JavaScript html5利用FileReader实现上传功能

    本文实例为大家分享了H5利用FileReader上传文件的具体代码,供大家参考,具体内容如下 1. Html部分 文件上传演练 Browse... 2. JS部分 var result = docum ...

  2. html5 js 手机剪切板,JavaScript+Html5实现按钮复制文字到剪切板功能(手机网页兼容)...

    新学习JavaScript,就碰到这么一个需求,几乎网上的方法都试过了.写出了总结下 使用的方法:clipboard 插件下载地址:https://github.com/zenorocha/clipb ...

  3. html5地图图片拖拽,javascript html5 canvas实现可拖动省份的中国地图

    本文实例分享了html5 canvas可拖动省份的中国地图实现方法,供大家参考,具体内容如下 1.数据获取 画地图需要省份边界坐标,理论上可以每次都用百度API获取数据并绘图,但为了增加效率,首先将所 ...

  4. html5多张图片滚动播放,javascript+html5实现仿flash滚动播放图片的方法_javascript技巧...

    本文实例讲述了javascript+html5实现仿flash滚动播放图片的方法.分享给大家供大家参考.具体如下: html部分: css部分: body{ margin: 0px; padding: ...

  5. 按键精灵通过句柄获取窗口坐标_大漠插件后台找图、自动获取坐标窗口句柄鼠标多点左单击脚本...

    大漠插件后台找图.自动获取坐标窗口句柄鼠标多点左单击 脚本 一.准备工作 第一步:下载大漠插件.解压,运行"注册大漠插件到系统.bat",把全部东东都复制到按键精灵的plugin目 ...

  6. html5 闪光,人脸检测的JavaScript / HTML5 /闪光[关闭](Face detection jav

    你有几个可能性,在这里,这取决于这是你要用于执行目标语言. 可能性之一是闪存,在那里你可以使用移植到大冢正和人脸检测库AS3最初实施OpenCV . http://www.libspark.org/w ...

  7. html5背景图片上放按钮,html5自定义video标签的海报与播放按钮

    文章目录 一.问题 1.默认播放按键不好看 2.设置自定义封面图 二.思路 1.使用div把video标签盖住 2.div中显示自定义的海报图片与按钮 三.步骤分解 1.海报图片作为div的背景 2. ...

  8. html5实现在线动态画板,Javascript HTML5 Canvas实现的一个画板

    DEMO6:自定义画板 浏览器不支持canvas YELLOW RED BLUE GREEN WHITE BLACK 4PX 8PX 16PX EXPORT var canvas = document ...

  9. 百度地图拖动标注后获取坐标

    本来想用图吧的API来做的,结果弄了下,在手机上弄不了.换用百度地图了..本功能个人觉得在很多地方用到,先记下来,省得每次都得翻地图API文档一点一点弄. 功能表现为: 地图一开始打开就定位到你的附近 ...

最新文章

  1. Sharding-eth
  2. java 取整型的低八位_Java 基础(十五)并发工具包 concurrent
  3. Android应用程序窗口(Activity)的视图对象(View)的创建过程分析
  4. boost::hana::remove_range_c用法的测试程序
  5. 设计面向游戏的人工智能(三):战术和战略人工智能 (AI)
  6. 单片机IO引脚驱动能力的提高
  7. vue监听滚动开始与结束
  8. 洞察设计模式的底层逻辑
  9. vue的transition组件的使用
  10. 两组的数据平均值合并_地理信息系统导论学习笔记(10)—数据探查
  11. 计算机网络通信选择题,计算机网络教(学)案通信技术选择题试题题库完整
  12. 诽谤、窃密、禁令、和解:文远知行创始团队纠纷暂时完结
  13. 310. 最小高度树
  14. 椭圆形中间一个大写的v_Shift键在 Word 中的 9 个经典操作,第一个你可能就不知道!【Word教程】...
  15. Linux下libaio的一个简单例子
  16. 【转】十分钟了结MySQL information_schema
  17. L2-016 愿天下有情人都是失散多年的兄妹 (25 分) (DFS)
  18. 冰汽时代机器人不用热_如何评价游戏《冰汽时代》?
  19. 分享一些嵌入式相关的开源项目
  20. androoid_4_4 yuga_clm920_cn 4G_module调试

热门文章

  1. iframe嵌套页面使用
  2. flink sql实战案例
  3. 查看Redis版本信息
  4. 【随笔】跳出程序员思维看世界
  5. Angular微前端
  6. php研究成果,PHP session 与 cookie 自己的研究成果
  7. 51单片机串口通信发送以及接收代码详解2
  8. css实现图片自适应缩放的两种方法
  9. java 滤镜_Java实现图片的滤镜效果
  10. zookeeper镜像删除报错:Error response from daemon:xxxxx…