Konva 获取鼠标在画布中的位置通用方法

记录一下,参数中的stageRef为konva的stage对象,我使用的是vue-konva,故可以使用vue的ref对象进行获取。

js 复制代码
/**
 * 获取鼠标在画布中的位置
 * @param stageRef
 * @returns
 */
export const getMousePosition = (stageRef: Ref) => {
  const stage = stageRef.value.getStage();
  const pointerPosition = stage.getPointerPosition();

  if (pointerPosition) {
    // 获取画布的缩放比例
    const scale = stage.scaleX(); // 假设x和y方向缩放比例相同

    // 获取画布的拖动位置
    const stagePos = stage.position();

    // 计算鼠标在原始画布坐标系中的位置
    return {
      x: (pointerPosition.x - stagePos.x) / scale,
      y: (pointerPosition.y - stagePos.y) / scale,
    };
  }
  return null;
};
相关推荐
hpoenixf1 小时前
2026 年前端面试问什么
前端·面试
还是大剑师兰特1 小时前
Vue3 中的 defineExpose 完全指南
前端·javascript·vue.js
泯泷2 小时前
阶段一:从 0 看懂 JSVMP 架构,先在脑子里搭出一台最小 JSVM
前端·javascript·架构
mengchanmian2 小时前
前端node常用配置
前端
华洛2 小时前
利好打工人,openclaw不是企业提效工具,而是个人助理
前端·javascript·产品经理
xkxnq3 小时前
第六阶段:Vue生态高级整合与优化(第93天)Element Plus进阶:自定义主题(变量覆盖)+ 全局配置与组件按需加载优化
前端·javascript·vue.js
A黄俊辉A4 小时前
vue css中 :global的使用
前端·javascript·vue.js
小码哥_常4 小时前
被EdgeToEdge适配折磨疯了,谁懂!
前端
小码哥_常4 小时前
从Groovy到KTS:Android Gradle脚本的华丽转身
前端
灵感__idea4 小时前
Hello 算法:复杂问题的应对策略
前端·javascript·算法