html矢量图 对画布的拖拽,原生WebGL如何使用鼠标拖拽画布?

本文主要讨论了在使用原生WebGL实现鼠标拖拽画布功能时遇到的平滑度问题。作者分享了一段拖拽代码,并指出在拖拽过程中存在不平滑的现象。文章寻求更好的解决方案,期望能提高画布拖拽的流畅性,涉及关键点包括鼠标事件处理、坐标转换和画布平移操作。
摘要由CSDN通过智能技术生成

1460000039877087

如图,我在实现鼠标拖拽画布这个功能时拖拽动作非常不平滑,请问有没有更好的方式用原生WebGL来实现鼠标拖拽画布功能?

拖拽部分代码:gl.canvas.onmousedown = function (ed) {

//鼠标点击时鼠标距离浏览器左边的距离

const rect1 = ed.target.getBoundingClientRect();

let {ma, mb} = canvasToWebGL({x: ed.clientX, y: ed.clientY}, {top: rect1.top, left: rect1.left}, gl);

// let ma = ed.clientX,mb = ed.clientY;

gl.canvas.onmousemove = function (em) {

gl.canvas.style.cursor = 'grabbing'

const rect2 = em.target.getBoundingClientRect();

let {x, y} = canvasToWebGL({x: em.clientX, y: em.clientY}, {top: rect2.top, left: rect2.left}, gl);

//canvas元素左边距离浏览器屏幕左边的距离

// let x = em.clientX, y = em.clientY;

if (ma - x > 0) {

gl.offsetX -= gl.tran_step

} else {

gl.offsetX += gl.tran_step

}

if (mb - y > 0) {

gl.offsetY -= gl.tran_step

} else {

gl.offsetY += gl.tran_step

}

// gl.translation_matrix = translation(x-ma,y-mb,0)

// console.log(gl.translation_matrix)

draw(gl);

ma = x;

mb = y;

}

gl.canvas.onmouseup = function () {

gl.canvas.style.cursor = 'default'

gl.canvas.onmousemove = null;

gl.canvas.onmouseup = null;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值