Масштабирование изображения и его прокрутка курсором мыши - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д