canvas中放入一张图片,但是其中的图片可以旋转 移动
canvas中放入一张图片,但是其中的图片可以旋转 移动,如果 我旋转了那张图,然后想要移动那张图片,请问坐标怎么确定?一直不会坐标的计算 导致移动的时候各种方向错乱。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
canvas中放入一张图片,但是其中的图片可以旋转 移动,如果 我旋转了那张图,然后想要移动那张图片,请问坐标怎么确定?一直不会坐标的计算 导致移动的时候各种方向错乱。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
巧了,手上的项目就是做这个,我是这么做的,仅供参考:
1.canvas区域内的每一个图片都有对应的内存对象,记录左上角坐标x,y,长宽width,height,角度 angle;
2.全局定义RefreshCanvas()方法,根据内存对象中的属性实时绘制;
3.一定要区分旋转和平移,否则会乱套,对于旋转,我规定只有鼠标点在图片的右上角小区域时判定为旋转,鼠标点在图片其余区域时为平移;
4.在鼠标的mousedown判断当前要变换的是哪个图?旋转还是平移?,在mousemove时计算鼠标位置的变化,修改对应内存对象中的各个属性(平移修改x,y,旋转修改angle),然后调用RefreshCanvas()绘制canvas。
关于RefreshCanvas(),我想题主应该能够很容易的找到canvas绘制image的方法,唯一提醒的是别忘了旋转时会把中心translate到图片的正中,之后一定不能忘了移回左上角。这里给题主贴一小段:
其实把restore()放前面就可以把中心切回save()前状态,这里没这么写是想看得清楚点,就是这样
P.S. canvas的图形变换真有意思,旋转涉及到三角函数,选中涉及到不规则多边形落点判断,相当有趣。
通常旋转都是相对于原点来的,你可以通过旋转整个画布来达到旋转图片的目的。
这样图片的坐标是不变的,正常移动即可了。
固定旋转角度
可以通过三角函数取得左上角的坐标,这个是最简单的,你的左上角到
不固定旋转角度
监听,解决方法同上
不监听,要看你的旋转实现方式了
我最近做了个插件,能在页面上选择图层进行旋转,放大,移动的操作,然后合并成一张图片。
http://jackgit.github.io/imag...
git: https://github.com/JackGit/im...
我的思路是:
过程中我也遇到了坐标混乱问题,特别是图像放大之后。总结是: