这个区域(矩形)由鼠标DOWN 和UP时候的两个点构成:SrcRect:=Rect(DownPoint.x,DownPoint.y,UpPoint.x,UpPoint.y);选择了这个区域后,判断鼠标是不是在这个区域中按下(意图拖动它) if PtInRect(MousePoint,SrcRect) then begin CanDrag:=true;设置一个辆,说明用户想拖动它。 end; 在这个图的MosueMove里: if CanDrag then begin /////// 在这里 有鼠标当前的坐标信息,判断这个坐标和MosueDown中鼠标按下的坐标的偏移,计算出,要把这个区域移动多远。然后用COPYRECT把 SRCRECT里的位图放到这个位置来就行了。。你需要自己计算一下无效区域,当这个小区域被移7走后,要刷新它。你可能会碰到一谢问题。这个无效区域需要计算,计算的正确,才能刷新的时候不造成闪烁。, end;
if PtInRect(MousePoint,SrcRect) then
begin
CanDrag:=true;设置一个辆,说明用户想拖动它。
end;
在这个图的MosueMove里:
if CanDrag then
begin
/////// 在这里 有鼠标当前的坐标信息,判断这个坐标和MosueDown中鼠标按下的坐标的偏移,计算出,要把这个区域移动多远。然后用COPYRECT把 SRCRECT里的位图放到这个位置来就行了。。你需要自己计算一下无效区域,当这个小区域被移7走后,要刷新它。你可能会碰到一谢问题。这个无效区域需要计算,计算的正确,才能刷新的时候不造成闪烁。,
end;