十字线要一直跟着鼠标,在PICTURE里面始终都只显示一对儿十字线,而且不能把PICTURE里面已经使用程序画好的线给抹掉!
谢谢!!

解决方案 »

  1.   

    只是鼠標形狀麼,Picture的MousePointer=99,一对儿十字线做成一ICO文件,再賦給Picture的MouseIcon,就可以了
      

  2.   

    Option Explicit
    Private Old_X As Single
    Private Old_Y As Single
    Private isMouseDown As Boolean
    Private Box_X0 As Single
    Private Box_Y0 As Single
    Private Box_X1 As Single
    Private Box_Y1 As Single
    Private PenColor As Long
    Private CrossColor As LongPrivate Sub Form_Load()
    CrossColor = QBColor(8)
    PenColor = QBColor(15)
    picDraw.DrawMode = vbXorPen
    picDraw.MouseIcon = LoadPicture(App.Path & "\no.cur")
    picDraw.MousePointer = vbCustom
    isMouseDown = False
    Box_X0 = Box_X1 = Box_Y0 = Box_Y1 = 0
    End SubPrivate Sub picDraw_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If isMouseDown = True Then
    ''先前已经用鼠标定义了一个点
    Box_X1 = X
    Box_Y1 = Y
    isMouseDown = False
    picDraw.DrawMode = vbCopyPen
    picDraw.Line (Box_X0, Box_Y0)-(Box_X1, Box_Y1), PenColor, B
    picDraw.DrawMode = vbXorPen
    ''画一个光标
    picDraw.Line (0, Y)-(picDraw.ScaleWidth, Y), CrossColor
    picDraw.Line (X, 0)-(X, picDraw.ScaleHeight), CrossColor
    Old_X = X
    Old_Y = Y
    Else
    ''定义了一个矩形的第一个顶点,则擦除光标
    picDraw.Line (0, Y)-(picDraw.ScaleWidth, Y), CrossColor
    picDraw.Line (X, 0)-(X, picDraw.ScaleHeight), CrossColor
    Box_X0 = X
    Box_Y0 = Y
    isMouseDown = True
    End If
    End SubPrivate Sub picDraw_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If isMouseDown = True Then
    ''拖动鼠标来定义矩形的另外一个顶点,
    '此时擦除前一个矩形,绘制新的矩形
    picDraw.Line (Box_X0, Box_Y0)-(Old_X, Old_Y), PenColor, B
    picDraw.Line (Box_X0, Box_Y0)-(X, Y), PenColor, B
    Else
    ''消除旧光标线
    picDraw.Line (0, Old_Y)-(picDraw.ScaleWidth, Old_Y), CrossColor
    picDraw.Line (Old_X, 0)-(Old_X, picDraw.ScaleHeight), CrossColor
    ''画新的光标线
    picDraw.Line (0, Y)-(picDraw.ScaleWidth, Y), CrossColor
    picDraw.Line (X, 0)-(X, picDraw.ScaleHeight), CrossColor
    End If
    Old_X = X
    Old_Y = Y
    End Sub
      

  3.   

    十字线????象cad那种吗???一个简单的例子:
    Private Sub Form_Load()
    Form1.Controls.Add "VB.line", "line1", Picture1
    Form1.Controls.Add "VB.line", "line2", Picture1
    Form1!Line1.BorderColor = 0
    Form1!Line1.Visible = True
    Form1!Line2.BorderColor = 0
    Form1!Line2.Visible = True
    End SubPrivate Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Form1!Line1.X1 = 0
    Form1!Line1.Y1 = Y
    Form1!Line1.X2 = Picture1.Width
    Form1!Line1.Y2 = Y
    Form1!Line2.X1 = X
    Form1!Line2.Y1 = 0
    Form1!Line2.X2 = X
    Form1!Line2.Y2 = Picture1.Height
    End Sub
      

  4.   

    不过上面的代码如果使用其它光标可能还需要考虑光标的hotspot
      

  5.   

    邮箱是[email protected],谢谢!!
      

  6.   

    Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        Me.MousePointer = 1
    End SubPrivate Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        Me.MousePointer = 2
    End Sub