Private Type POINTAPI X As Long Y As Long End Type Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As LongDim z As POINTAPI Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As LongPrivate Sub Form_Load() Picture1.AutoRedraw = True Picture1.DrawWidth = 4 Picture1.Scale (0, -1)-(20, 1) For X = 0 To Picture1.ScaleWidth Step 0.01 Picture1.PSet (X, Sin(X)), vbRed Label1.BackStyle = 0 Label1.Caption = "" Next End SubPrivate Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) GetCursorPos z ret = GetDC(0) a = GetPixel(ret, z.X, z.Y) If a = 255 Then Label1.Left = X Label1.Top = Y Label1.Caption = Format(X, "0.00") & "," & Format(Y, "0.00") Else Text1.Text = "" End If End Sub
谢谢二楼的,代码我试了,可是label并不和点的位置保持一致啊
Option ExplicitPrivate m_LineColor As LongPrivate Sub Form_Load() Dim X As Long, Y As Long, h As Long
Randomize h = Picture1.ScaleHeight For X = 0 To Picture1.ScaleWidth Step 16 Y = Rnd() * h Picture1.Line -(X, Y) Next m_LineColor = Picture1.Point(0, 0) End SubPrivate Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) If Picture1.Point(X, Y) = m_LineColor Then Label1 = "(" & X & ", " & Y & ")" Else Label1 = vbNullString End If End Sub
X As Long
Y As Long
End Type
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As LongDim z As POINTAPI
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As LongPrivate Sub Form_Load()
Picture1.AutoRedraw = True
Picture1.DrawWidth = 4
Picture1.Scale (0, -1)-(20, 1)
For X = 0 To Picture1.ScaleWidth Step 0.01
Picture1.PSet (X, Sin(X)), vbRed
Label1.BackStyle = 0
Label1.Caption = ""
Next
End SubPrivate Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
GetCursorPos z
ret = GetDC(0)
a = GetPixel(ret, z.X, z.Y)
If a = 255 Then
Label1.Left = X
Label1.Top = Y
Label1.Caption = Format(X, "0.00") & "," & Format(Y, "0.00")
Else
Text1.Text = ""
End If
End Sub
Dim X As Long, Y As Long, h As Long
Picture1.AutoRedraw = True
Picture1.ScaleMode = vbPixels
Randomize
h = Picture1.ScaleHeight
For X = 0 To Picture1.ScaleWidth Step 16
Y = Rnd() * h
Picture1.Line -(X, Y)
Next
m_LineColor = Picture1.Point(0, 0)
End SubPrivate Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Picture1.Point(X, Y) = m_LineColor Then
Label1 = "(" & X & ", " & Y & ")"
Else
Label1 = vbNullString
End If
End Sub
Text1.Text = ""
改为
Label1.Caption = ""
就OK了,我开始用Text1显示,改Label时,这句漏了,没改过来
看你的语气,似乎就差一点点:
Label标签的显示内容被鼠标遮住了少许?
这个自己凑啦:
label1.top=Y-0.05