我试图找出如何正确拖动窗口。 我的拖动算法类似于
if(left button is pressed and mouse intersects shape)
set position of shape to mouse position.x and mouse position.y
因此在设置位置后,形状的左上角位于鼠标位置x和y。
我真的很感激如何实现正确拖动的小建议。
答案 0 :(得分:2)
可能需要单独处理鼠标事件,因此不仅要检查是否按下了左键,还必须处理鼠标按下/向上事件(以确保只在按下鼠标时才开始拖动在你的形状内而不是之前)。
如果您的拖动操作已经开始,可能还需要记住标记(这样您就知道在鼠标移动时必须移动形状)。
if(mouse down and mouse on shape)
{
start drag operation
var lastMousePosition = getCurrentMousePosition;
}
if(mouse moving and drag started)
{
var newMousePosition = getCurrentMousePosition;
var diff = newMousePosition - lastMousePosition;
add diff to current shape position
lastMousePosition = newMousePosition;
}
if(mouse released)
{
stop drag operation.
}