canvas组件的@touchstart、@touchmove、@touchend获取的坐标是从屏幕左上角作为原点开始?
为什么不是从画布的左上角作为原点?
<canvas id="canvas" ref="canvas" style="width: 600rpx;height: 360rpx;"
@touchstart="handleTouchStart" @touchmove="handleTouchMove"
@touchend="handleTouchEnd"></canvas>
handleTouchStart(e : TouchEvent) {
if (this.ctx != null) {
const touch = e.touches[0];
let x = touch.clientX
let y = touch.clientY
console.log(x, y)
}
},
//other like this
2***@qq.com (作者)
canvas组件的宽高大小与实际的querySelector获取的宽高大小也不一致。用UniTouchEvent的clientX减去 Element基类getBoundingClientRect()下的矩形原点的x坐标,从开始的画布(0,0)绘制是正常,但是越往右计算,最终画布的点对应不上,原因就是宽高大小不一致,不知道是不是bug还是我哪里写错了。
现在我改用DrawableContext充当画布了,手指绘制跟随计算都正常。。。。
2025-07-24 16:51