高手问答:用鼠标选取image上的一块图形,并且用鼠标移动选取的图形,如何实现呢。

解决方案 »

  1.   

    基本思想:把按下鼠标时的坐标记录下来,然后把目的地的鼠标的坐标再记录下来,然后再拖动选中的区域,完毕后,用copyrect()来拷贝图形,不知道行不行,我没试过
      

  2.   

    这个区域(矩形)由鼠标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;