拖一个window

Dragging a window

我正在研究如何正确拖动 window。 我的拖动算法是这样的

if(left button is pressed and mouse intersects shape)
   set position of shape to mouse position.x and mouse position.y

所以设置位置后形状的左上角在鼠标 position.x 和 y.

非常感谢有关如何正确实施拖动的小建议。

可能需要单独处理鼠标事件,因此除了检查左键是否按下之外,您还必须处理鼠标 down/up 事件(以确保您的拖动仅在按下时开始您将鼠标按在形状内部而不是之前)。

如果你的拖动操作已经开始,可能还需要用一个标志来记住(这样你就知道你必须在鼠标移动时移动你的形状)。

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.
}