Private Sub Form_MouseMove(...) Image1.Image = LoadPicture(Pic1) End SubPrivate Sub Image1_MouseMove(...) Image1.Image = LoadPicture(Pic2) End Sub
用setcapture和releasecapture方法,但是需要控件句柄,image控件无法得到句柄, 所以如果需求允许的话可以换成无边框的picturebox控件.此外,还可以用Timer + ScreenToClient + GetCursorPos但后者缺陷较多Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim MouseOut As Boolean MouseOut = (X < 0 Or Y < 0 Or X > Picture1.Width Or Y > Picture1.Height) If MouseOut = False Then SetCapture Picture1.hWnd Picture1.Picture = LoadPicture("C:\PictureOver.bmp") Else ReleaseCapture Picture1.Picture = LoadPicture("C:\PictureOut.bmp") End If End Sub
简单的,上面有位属性写错了: Private Sub Form_MouseMove(...) Image1.Picture = LoadPicture(Pic1) End SubPrivate Sub Image1_MouseMove(...) Image1.Picture = LoadPicture(Pic2) End Sub
Image1.Image = LoadPicture(Pic1)
End SubPrivate Sub Image1_MouseMove(...)
Image1.Image = LoadPicture(Pic2)
End Sub
所以如果需求允许的话可以换成无边框的picturebox控件.此外,还可以用Timer +
ScreenToClient + GetCursorPos但后者缺陷较多Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim MouseOut As Boolean
MouseOut = (X < 0 Or Y < 0 Or X > Picture1.Width Or Y > Picture1.Height)
If MouseOut = False Then
SetCapture Picture1.hWnd
Picture1.Picture = LoadPicture("C:\PictureOver.bmp")
Else
ReleaseCapture
Picture1.Picture = LoadPicture("C:\PictureOut.bmp")
End If
End Sub
Private Sub Form_MouseMove(...)
Image1.Picture = LoadPicture(Pic1)
End SubPrivate Sub Image1_MouseMove(...)
Image1.Picture = LoadPicture(Pic2)
End Sub