项目要求用户能够在svg图片上动态绘制矩形框,就需要获取鼠标在svg上的位置
- 尝试直接用getBoundingClientRect()获取宽高,通过viewBox(x,y,width,hieght)里面的width和height去计算比例后,在与offsetX、offsetY相乘,虽然确实能绘制框,但是当svg图经过缩放后就不准确了,所以就记录一下,pass掉。
var pageScale = {
x: viewBox.width/ thissvg.getBoundingClientRect().width,
y: viewBox.hieght/ thissvg.getBoundingClientRect().height
}
var pt = {
x: e.offsetX * pageScale.x,
x: e.offsetY * pageScale.y
}
- 通过创建一个svg点,再传入鼠标事件的坐标,通过变换矩阵的方法,就可以获取svg坐标了,以下是代码, get √
// 返回转换后的svg坐标,evt: 鼠标事件,svg: 要传入的svg
cursorPoint(evt,svg){
let pt = svg.createSVGPoint();
pt.x = evt.clientX;
pt.y = evt.clientY;
return pt.matrixTransform(svg.getScreenCTM().inverse());
},
// vue使用示例
<svg ... ref='mysvg' @mousedown='myMouseDown'>
myMouseDown (e) {
let mysvg = this.$refs.mysvg
let pt = this.cursorPoint(e,mysvg)
console.log(pt.x, pt.y)
}
最后
以上就是乐观小熊猫最近收集整理的关于获取鼠标在使用viewbox的svg上的位置的全部内容,更多相关获取鼠标在使用viewbox内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复