我想让一个按钮沿着一个圆形轨道移动,鼠标左键点住的时候可以沿着这个路径拖动,这个要怎么实现,是在VB6下面。

解决方案 »

  1.   

    直接根据mousemove改变按钮的left和top就可以
      

  2.   

    先定义圆形的POINT越多越准,在拖动控件时鼠标不许移出这个POINT的+/-5就行了。
      

  3.   

    根据 mousemove取得鼠标坐标,然后取出对应到circle的坐标就可以
      

  4.   

    mouseDown事件确定开始状态,在mousemove事件中,用事件的参数x,y就可以取得鼠标的位置呀
      

  5.   

    Dim ifdrag As BooleanPrivate Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    ifdrag = True
    End SubPrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If ifdrag Then
      Command1.Left = X - 100
      Command1.Top = Y - 100
    End If
    End SubPrivate Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    ifdrag = False
    End Sub
      

  6.   

    你需要记录上个MOVE点,当前MOVE点的坐标,用于判断方向.
      

  7.   

    或者你直接根据鼠标MOVE,把坐标映射到圆上的对应坐标,就是按钮的位置了,所谓映射是指鼠标位置与圆心连线与圆的交点....这样就很简单,只要知道圆的方程式和鼠标位置,就可以确定按钮位置了
      

  8.   

    不过我的圆不是事先定义好坐标的,我是根据鼠标MOVE的X轴的坐标,然后根据直角三角形求边长的办法,根据半径再求出Y轴的坐标,这样定义圆的,所以没有参照物啊,没办法用你第二种办法。
      

  9.   

    我求圆是这样写的:If downtrue = True ThenDim a, s As Long
    a = Abs(X - 870) '圆心坐标为(870,870)
    s = a * a
    If s >= 360000 Then '半径600
    Exit Sub
    Else
    If Y < 870 Then
    Image4.Left = X
    Image4.Top = 1800 - Sqr(360000 - s)Else
    Image4.Left = X
    Image4.Top = 1800 + Sqr(360000 - s)End If
    End If
    End If