Рисование мышкой. При нажатии левой кнопки мыши и ее перемещении рисуется кривая - Visual Basic .NET

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

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

У меня vb 2010 надо написать программу при нажатии левой кнопки мышки и ее перемещении рисуется кривая. Что-то вроде карандаша в фотошопе. Подскажите как это реализовать или приведите примеры реализации.

Решение задачи: «Рисование мышкой. При нажатии левой кнопки мыши и ее перемещении рисуется кривая»

textual
Листинг программы
Public Class Form1
    Dim Лист As Bitmap
    Dim Гр, Граф As Graphics                         'Объекты класса Graphics над Листом и над формой
    Dim Кисть As New SolidBrush(Color.Black)        'Цвет карандаша поначалу черный
    Dim Толщина As Integer = 3
 
    Dim Перо As New Pen(Color.Black, 3)       'Цвет карандаша поначалу черный, толщина=3
    'Координаты мыши при предыдущем (перед текущим) наступлении события MouseMove:
    Dim X_предыдущее As Long
    Dim Y_предыдущее As Long
 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Лист = New Bitmap(Me.Width, Me.Height)
        Гр = Graphics.FromImage(Лист)
        Граф = Me.CreateGraphics
        Перо.StartCap = Drawing2D.LineCap.Round     'Иначе линия получается не гладкая
        Перо.EndCap = Drawing2D.LineCap.Round
    End Sub
 
    Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) _
    Handles MyBase.MouseMove
        If e.Button = MouseButtons.Left Then
            'Рисуем отрезок прямой от текущего положения мыши до предыдущего:
            Гр.DrawLine(Перо, e.X, e.Y, X_предыдущее, Y_предыдущее)
            Граф.DrawLine(Перо, e.X, e.Y, X_предыдущее, Y_предыдущее)
            'Запоминаем текущее положение мыши для будущего срабатывания MouseMove, 
            'когда оно будет уже предыдущим:
            X_предыдущее = e.X
            Y_предыдущее = e.Y
        End If
    End Sub
 
    Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) _
    Handles MyBase.MouseDown
        'В начальный момент рисования, когда мы только нажимаем кнопку мыши, 
        'предыдущее и текущее положения мыши совпадают:
        X_предыдущее = e.X
        Y_предыдущее = e.Y
    End Sub
 
  Private Sub Form1_Resize(sender As Object, e As EventArgs) Handles Me.Resize
        Лист = New Bitmap(Me.Width, Me.Height)
        Гр = Graphics.FromImage(Лист)
        Граф = Me.CreateGraphics
    End Sub
End Class

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


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

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

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