如何画一个矩形,用鼠标控制大小而且可以移动这个矩形?? 急求代码,请哪位高手帮帮忙吧!

解决方案 »

  1.   

    使用Shape控件。
    响应MouseDown、Drug/Drop事件。
      

  2.   

    如果是自绘的话,也可以用图片框,这里有个例子:http://www.m5home.com/temp/DrawDemo.htm不过由于是给别人写的项目,不能给你代码,思路说给你吧:形状以对象来管理,比如你要的是矩形,那就以一个矩形对象来管理,这个对象有左上角与右下角坐标属性,还有一个绘制方法,用于在界面上绘制图象,还需要一个移动方法,在传入的坐标上显示虚线框(移动中的效果).还可以加入判断某坐标是否位于对象线条内的方法(用于判断点击选择),对象是否显示属性,对象是否被选中属性等,这个自己扩充啦.那么主界面里只需要选择一个操作方式(移动,还是选择之类),再用当前点击的坐标调用相应的方法即可.
      

  3.   

    shape控件应该没有MouseDown、Drug/Drop事件吧?呵呵
      

  4.   

    在窗口中放入一个Shape控件,就叫shape1Option ExplicitDim xStart As Long, yStart As Long
    Dim SizeMode As LongPrivate Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
        xStart = X
        yStart = Y
        
    End SubPrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        Dim dX As Long, dY As Long
        With Shape1
            Select Case Button
            Case 0
                MousePointer = 0
                SizeMode = 0
                If Abs(X - .Left) < 50 Then
                    MousePointer = vbSizeWE
                    SizeMode = 1
                    Exit Sub
                End If
                            
                If Abs(X - .Left - .Width) < 50 Then
                    MousePointer = vbSizeWE
                    SizeMode = 2
                    Exit Sub
                End If
                
                If Abs(Y - .Top) < 50 Then
                    MousePointer = vbSizeNS
                    SizeMode = 3
                    Exit Sub
                End If
                            
                If Abs(Y - .Top - .Height) < 50 Then
                    MousePointer = vbSizeNS
                    SizeMode = 4
                    Exit Sub
                End If
                
                If X > .Left And X < .Left + .Width And Y > .Top And Y < .Top + .Height Then
                    MousePointer = vbSizeAll
                    SizeMode = 5
                End If
            Case 1
                dX = X - xStart
                dY = Y - yStart
                xStart = X
                yStart = Y
                Select Case SizeMode
                Case 1
                    .Move .Left + dX, .Top, .Width - dX
                Case 2
                    .Width = .Width + dX
                Case 3
                    .Move .Left, .Top + dY, .Width, .Height - dY
                Case 4
                    .Height = .Height + dY
                Case 5
                    .Move .Left + dX, .Top + dY
                End Select
            End Select
        End With
    End Sub
      

  5.   

    这个算法也是应用数学领域众多算法用来试验的典型试验田,国内外有大量的论文都在讨论它。科普下:http://zh.wikipedia.org/wiki/%E6%97%85%E8%A1%8C%E6%8E%A8%E9%94%80%E5%91%98%E9%97%AE%E9%A2%98