You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何定义取值的包容范围以实现带像素容差的矩形拖拽功能

实现方案

你需要根据实际拖拽触发规则二选一即可:

方案1:扩大整个矩形的可点击范围(最常用,符合大多数拖拽需求)

相当于把原矩形的四个边各向外扩展20像素作为可点击区域,只要点击在扩边后的区域内就可以触发拖拽。如果你的矩形固定宽高为16,直接用如下代码替换原有逻辑:

# x方向判断:左边界向左扩20,右边界向右扩20
same_x = m_pos[0] >= Rect36[0] - 20 and m_pos[0] <= Rect36[0] + 16 + 20
# y方向判断:上边界向上扩20,下边界向下扩20
same_y = m_pos[1] >= Rect36[1] - 20 and m_pos[1] <= Rect36[1] + 16 + 20

如果矩形的宽高存储在Rect36的第三、第四位(即Rect36 = [x, y, width, height]),可以把固定值16替换为对应的宽高变量,适配动态尺寸的矩形:

same_x = m_pos[0] >= Rect36[0] - 20 and m_pos[0] <= Rect36[0] + Rect36[2] + 20
same_y = m_pos[1] >= Rect36[1] - 20 and m_pos[1] <= Rect36[1] + Rect36[3] + 20

方案2:仅判断点击位置和矩形左上角的偏移

如果你的拖拽触发逻辑是仅允许点击矩形左上角附近区域触发移动,只需要判断坐标差的绝对值不超过20即可:

same_x = abs(m_pos[0] - Rect36[0]) <= 20
same_y = abs(m_pos[1] - Rect36[1]) <= 20

原有代码问题说明

你之前写的m_pos[0] == Rect36[0] + (0 <= x <= 16)语法逻辑完全错误:(0 <= x <=16)返回的是布尔值,和坐标数值相加没有实际意义,直接替换为上面的区间判断逻辑即可。

内容的提问来源于stack exchange,提问作者Jay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 20:45:04