现屏幕上显示一图片,如何在其上进行描点和划线等,并进一步将此图片进行放大、缩小以及在屏幕上(包括屏幕外)移动???

解决方案 »

  1.   

    1.画线与描点Option ExplicitDim lngDownX As Long, lngDownY As LongPrivate Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
        lngDownX = X: lngDownY = Y
    End SubPrivate Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        Static lngOldX As Long, lngOldY As Long
        If Button = vbLeftButton Then
        
            Picture1.Line (lngDownX, lngDownY)-(X, Y)
            Picture1.DrawMode = vbNotXorPen
            Picture1.Line (lngDownX, lngDownY)-(lngOldX, lngOldY)
            
        End If
        lngOldX = X: lngOldY = Y
    End Sub
      

  2.   

    2.移动图片Option ExplicitDim lngDownX As Long, lngDownY As LongPrivate Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
        lngDownX = X: lngDownY = Y
    End SubPrivate Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        If Button = vbLeftButton Then
            With Picture1
                .Move .Left + X - lngDownX, .Top + Y - lngDownY
            End With
        End If
    End Sub
      

  3.   

    Option ExplicitDim lngDownX As Long, lngDownY As Long
    Dim lngNum As Long'放大
    Private Sub Command1_Click()
    On Error Resume Next
        lngNum = lngNum + 1
        Picture1.Picture = Picture1.Image
        Picture1.PaintPicture Picture1.Picture, 0, 0, Picture1.Width * lngNum, Picture1.Height * lngNum, 0, 0, Picture1.Width, Picture1.Height, vbSrcCopy
    End Sub'缩小
    Private Sub Command2_Click()
    On Error Resume Next
        lngNum = lngNum - 1
        Picture1.Cls
        Picture1.Picture = Picture1.Image
        Picture1.PaintPicture Picture1.Picture, 0, 0, Picture1.Width * lngNum, Picture1.Height * lngNum, 0, 0, Picture1.Image.Width, Picture1.Image.Height, vbSrcCopy
    End SubPrivate Sub Form_Load()
        lngNum = 1
        Picture1.AutoRedraw = True
    End SubPrivate Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
        lngDownX = X: lngDownY = Y
    End SubPrivate Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        Static lngOldX As Long, lngOldY As Long
        If Button = vbLeftButton Then
        
            Picture1.Line (lngDownX, lngDownY)-(X, Y)
            Picture1.DrawMode = vbNotXorPen
            Picture1.Line (lngDownX, lngDownY)-(lngOldX, lngOldY)
            
        End If
        lngOldX = X: lngOldY = Y
    End Sub