Масштабирование изображения и его прокрутка курсором мыши - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

В windows есть программа работы с изображением, где крутя колёсико фото увеличивается или уменьшается относительно курсора и при удержании левой кнопки мыши можно передвигать фото. Есть ли в vb.net класс для реализации этого эффекта или нужно создавать свой класс с набором инструментов? Тогда какие лучше инструменты использовать?

Решение задачи: «Масштабирование изображения и его прокрутка курсором мыши»

textual
Листинг программы
Public Class Form2
    Private pPoint As Point
    Private dragging As Boolean
    Private myBmp As New Bitmap("ttt.jpg")
    Private w, h As Integer
    Private reg As Rectangle
    'на форме Panel1 и на Panel1 размещен PictureBox1
    Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        PictureBox1.Size = New Size(Panel1.Width, Panel1.Height)
        PictureBox1.SizeMode = PictureBoxSizeMode.Normal
        w = myBmp.Width
        h = myBmp.Height
        reg = New Rectangle(0, 0, w, h)
        PictureBox1.Invalidate()
    End Sub
    Private Sub PictureBox1_MouseWheel(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseWheel
        Dim d As Double = Math.Abs(e.Delta) - 100
        Dim dw As Double = w / d
        Dim dh As Double = h / d
        If (e.Delta > 0) Then
            reg.Width += dw
            reg.Height += dh
        Else
            reg.Width -= dw
            reg.Height -= dh
        End If
        PictureBox1.Size = New Size(reg.Width, reg.Height)
        PictureBox1.Invalidate()
    End Sub
    Private Sub PictureBox1_MouseEnter(sender As System.Object, e As System.EventArgs) Handles PictureBox1.MouseEnter
        If Not PictureBox1.Focused Then
            PictureBox1.Focus()
        End If
    End Sub
    Private Sub PictureBox1_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
        Dim g = e.Graphics
        g.Clear(Color.White)
        g.DrawImage(myBmp, reg)
    End Sub
    Private Sub PictureBox1_MouseDown(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
        If e.Button = MouseButtons.Left Then
            dragging = True
            pPoint = New Point(e.X, e.Y)
        Else
            dragging = False
        End If
    End Sub
    Private Sub PictureBox1_MouseMove(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
        If e.Button = Windows.Forms.MouseButtons.Left And dragging = True Then
            Dim dX As Integer = (pPoint.X - e.X)
            Dim dY As Integer = (pPoint.Y - e.Y)
            PictureBox1.Location = New Point(PictureBox1.Location.X - dX, PictureBox1.Location.Y - dY)
        End If
    End Sub
    Private Sub PictureBox1_MouseUp(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp
        dragging = False
    End Sub
End Class

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5
Похожие ответы