我想问是否可以在 picbox 上拖动图像,当鼠标光标指向某个对象时,所以当我选择 X-textbox、y-textbox 并选择 pin 文本时,它将根据我的坐标 n pin 编号显示我选择了。
但我想将它们拖到图片框上。当鼠标光标碰到该IC图像时,可以拖动。但并非所有 picbox 上的图像都拖在一起。
谁能给我一些建议?
我的完整代码如下:
Option Explicit
Private mPic As Picture
Private mPicWidth As Single
Private mPicHeight As Single
Private mCurrentX As Single
Private mCurrentY As Single
Private mLeft As Single
Private mTop As Single
Private Sub Command5_Click()
Call draw_ic(Val(Text5), Val(Text6), Val(Text7))
End Sub
Private Sub Form_Load()
Picture1.AutoRedraw = True
Set mPic = Picture1.Image
End Sub
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
mPicWidth = Me.ScaleX(mPic.Width, vbHimetric, Picture1.ScaleMode)
mPicHeight = Me.ScaleY(mPic.Height, vbHimetric, Picture1.ScaleMode)
ShowPictureAtPosition mLeft, mTop
End Sub
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 0 Then
mCurrentX = X
mCurrentY = Y
ElseIf Button = vbLeftButton Then
ShowPictureAtPosition X + mLeft - mCurrentX, Y + mTop - mCurrentY
End If
End Sub
Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
mLeft = X + mLeft - mCurrentX: mTop = Y + mTop - mCurrentY
End Sub
Private Sub ShowPictureAtPosition(pX As Single, pY As Single)
With Picture1
.Cls
.PaintPicture mPic, pX + 1, pY + 1, mPicWidth, mPicHeight
End With
End Sub
Function draw_ic(X, Y, pincount)
If pincount = 8 Then
Picture1.Line (X, Y)-(X + 120, Y + 48), vbBlack, B
Picture1.Line (X + 8, Y)-(X + 24, Y - 16), vbBlack, B
Picture1.Line (X + 34, Y)-(X + 50, Y - 16), vbBlack, B
Picture1.Line (X + 60, Y)-(X + 76, Y - 16), vbBlack, B
Picture1.Line (X + 86, Y)-(X + 102, Y - 16), vbBlack, B
Picture1.Line (X + 8, Y + 48)-(X + 24, Y + 64), vbBlack, B
Picture1.Line (X + 34, Y + 48)-(X + 50, Y + 64), vbBlack, B
Picture1.Line (X + 60, Y + 48)-(X + 76, Y + 64), vbBlack, B
Picture1.Line (X + 86, Y + 48)-(X + 102, Y + 64), vbBlack, B
ElseIf pincount = 12 Then
Picture1.Line (X, Y)-(X + 158, Y + 64), vbBlack, B
Picture1.Line (X + 8, Y)-(X + 16, Y - 8), vbBlack, B
Picture1.Line (X + 32, Y)-(X + 40, Y - 8), vbBlack, B
Picture1.Line (X + 56, Y)-(X + 64, Y - 8), vbBlack, B
Picture1.Line (X + 80, Y)-(X + 88, Y - 8), vbBlack, B
Picture1.Line (X + 104, Y)-(X + 112, Y - 8), vbBlack, B
Picture1.Line (X + 128, Y)-(X + 136, Y - 8), vbBlack, B
Picture1.Line (X + 8, Y + 64)-(X + 16, Y + 72), vbBlack, B
Picture1.Line (X + 32, Y + 64)-(X + 40, Y + 72), vbBlack, B
Picture1.Line (X + 56, Y + 64)-(X + 64, Y + 72), vbBlack, B
Picture1.Line (X + 80, Y + 64)-(X + 88, Y + 72), vbBlack, B
Picture1.Line (X + 104, Y + 64)-(X + 112, Y + 72), vbBlack, B
Picture1.Line (X + 128, Y + 64)-(X + 136, Y + 72), vbBlack, B
ElseIf pincount = 16 Then
Picture1.Line (X, Y)-(X + 222, Y + 72), vbBlack, B
Picture1.Line (X + 8, Y)-(X + 24, Y - 16), vbBlack, B
Picture1.Line (X + 34, Y)-(X + 50, Y - 16), vbBlack, B
Picture1.Line (X + 60, Y)-(X + 76, Y - 16), vbBlack, B
Picture1.Line (X + 86, Y)-(X + 102, Y - 16), vbBlack, B
Picture1.Line (X + 112, Y)-(X + 128, Y - 16), vbBlack, B
Picture1.Line (X + 138, Y)-(X + 154, Y - 16), vbBlack, B
Picture1.Line (X + 164, Y)-(X + 180, Y - 16), vbBlack, B
Picture1.Line (X + 190, Y)-(X + 206, Y - 16), vbBlack, B
Picture1.Line (X + 8, Y + 72)-(X + 24, Y + 88), vbBlack, B
Picture1.Line (X + 34, Y + 72)-(X + 50, Y + 88), vbBlack, B
Picture1.Line (X + 60, Y + 72)-(X + 76, Y + 88), vbBlack, B
Picture1.Line (X + 86, Y + 72)-(X + 102, Y + 88), vbBlack, B
Picture1.Line (X + 112, Y + 72)-(X + 128, Y + 88), vbBlack, B
Picture1.Line (X + 138, Y + 72)-(X + 154, Y + 88), vbBlack, B
Picture1.Line (X + 164, Y + 72)-(X + 180, Y + 88), vbBlack, B
Picture1.Line (X + 190, Y + 72)-(X + 206, Y + 88), vbBlack, B
End If
End Function