如果只有一条还好办:用Label控件透明化覆盖在Line上Click事件交给Label。
解决方案 »
- 求助:vb6.0中API浏览器看不能查找函数
- 把指定的EXCEL工作簿里SHEET1表里的数据复制到程序同目录名为“SJ”工作簿里的“KK”表里
- 网游的辅助外挂用什么语言比较好
- 基础 急急急急急急
- 关于WebBrowser中的图片的问题
- 请教高手!数据筛加载图片的问题(在线等)
- fangzi 请进
- WINSOCK 用 CONNECT 连接服务器时发生“地址簇不支持”的错误,请问怎么解决?
- 2000下做的程序发布到95/98下出现问题.
- 找这样一个控件,你知道么
- 一个极其现实,古老的问题
- 给你一片天空!我们一起翱翔。。。为了明天,为了一个美丽的梦想---创建国内一流的VB/ASP技术站点!真诚希望你的加盟。
利用鼠标mousedown事件里的两个参数x,y来判断是否点在了线上.在把该线高亮显示.
嘿嘿,应该就可以咯.
' LineDDA 100, 100, 105, 105, AddressOf LineDDAProc, 0
'End SubPrivate Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim i As Integer, selected As Boolean
nPoints = 0
LineDDA 20, 20, 200, 200, AddressOf LineDDAProc, 0
For i = 0 To nPoints - 1
If ((pX(i) - X) ^ 2 + (pY(i) - Y) ^ 2) ^ 0.5 < 3 Then
MsgBox "您点选的是 (20, 20) - (200, 200) 线段!"
selected = True
Exit For
End If
Next
nPoints = 0
LineDDA 20, 150, 200, 50, AddressOf LineDDAProc, 0
For i = 0 To nPoints - 1
If ((pX(i) - X) ^ 2 + (pY(i) - Y) ^ 2) ^ 0.5 < 3 Then
MsgBox "您点选的是 (20, 150) - (200, 50) 线段!重画Line1!"
Line1.X1 = 2400
Line1.Y1 = 4800
Line1.X2 = 3000
Line1.Y2 = 1800
selected = True
Exit For
End If
Next
nPoints = 0
LineDDA 240, 300, 480, 180, AddressOf LineDDAProc, 0
For i = 0 To nPoints - 1
If ((pX(i) - X) ^ 2 + (pY(i) - Y) ^ 2) ^ 0.5 < 3 Then
MsgBox "您点选的是 240, 300, 480, 180 线段!"
selected = True
Exit For
End If
Next If Not selected Then
MsgBox "您没有点选到任何线段!"
End If
End SubPrivate Sub Form_Paint()
Me.ScaleMode = vbPixels
Line (20, 20)-(200, 200)
Line (20, 150)-(200, 50)
Line (240, 300)-(480, 180)
End Sub
****************************************************************
'Module1代码Option ExplicitDeclare Function LineDDA Lib "gdi32" (ByVal n1 As Long, ByVal n2 As Long, ByVal n3 As Long, ByVal n4 As Long, ByVal lpLineDDAProc As Long, ByVal lParam As Long) As LongPublic pX(2048) As Long
Public pY(2048) As Long
Public nPoints As IntegerSub LineDDAProc(ByVal X As Long, ByVal Y As Long, ByVal lpData As Long)
pX(nPoints) = X
pY(nPoints) = Y
nPoints = nPoints + 1
End Sub