Программирование
Система
Веб программирование
|
Выделение области в графическом редактореНеотъемлемым инструментом любого графического редактора является выделение области рисунка. Рассмотрим, как можно сформировать выделение области на форме и переместить это выделение.
Нам еще потребуются заготовки процедур событий Form1_MouseDown, Form1_MouseUp и Form1_MouseMove. Все они легко получаются выбором в правом верхнем окне редактора, там где находится список возможных событий.
Если у кого возникнут вопросы, охотно отвечу. Public Class Form1 Dim pc(4) As PictureBox Dim i, j, k, io, jo, ireg As Integer Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Height = 700 'Высота формы Me.Width = 1000 'Длина формы Me.StartPosition = FormStartPosition.CenterScreen 'Форма в центре экрана pc(1) = PictureBox1 pc(2) = PictureBox2 pc(3) = PictureBox3 pc(4) = PictureBox4 ireg = 0 'Переменная выбора режима прорисовка/перемещение выделения For Me.i = 1 To 4 pc(i).Visible = False pc(i).Width = 1 'Все стороны выделения в точку pc(i).Height = 1 pc(i).BackColor = Color.Blue 'Задание цвета контура выделения Next End Sub Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown 'Левая кнопка мышки нажата If e.Button = MouseButtons.Left Then io = e.X 'Стартовые координата прорисовки jo = e.Y k = 1 End If 'Правая кнопка мышки нажата If e.Button = MouseButtons.Right Then 'Стирание прорисовки выделения For Me.i = 1 To 4 pc(i).Visible = False pc(i).Width = 1 pc(i).Height = 1 Next ireg = 0 Cursor.Current = Cursors.Arrow 'Курсор обычная стрелка End If End Sub Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove 'Вывод координат курсора в заголовок формы Form1.ActiveForm.Text = e.X & " X " & e.Y i = e.X j = e.Y 'Прорисовка области выделения If k = 1 And ireg = 0 Then pc(1).Width = Math.Abs(i - io) pc(1).Top = jo pc(2).Width = pc(1).Width pc(3).Height = Math.Abs(j - jo) pc(2).Top = jo + pc(3).Height pc(3).Top = pc(1).Top pc(1).Left = io pc(2).Left = pc(1).Left pc(3).Left = pc(1).Left pc(4).Left = pc(1).Left + pc(1).Width pc(4).Top = pc(1).Top pc(4).Height = pc(3).Height For Me.i = 1 To 4 pc(i).Visible = True Next End If 'Перемещение области выделения If k = 1 And ireg = 1 Then pc(1).Top = j - 0.5 * pc(3).Height pc(1).Left = i - 0.5 * pc(1).Width pc(2).Left = pc(1).Left pc(2).Top = pc(1).Top + pc(4).Height pc(3).Left = pc(1).Left pc(4).Left = pc(1).Left + pc(1).Width pc(3).Top = pc(1).Top pc(4).Top = pc(1).Top Cursor.Current = Cursors.SizeAll End If 'Если курсор в выделенной области, то отображается стрелка-крест If k = 0 Then If i > pc(1).Left And i < pc(1).Left + pc(1).Width And j > pc(1).Top And j < pc(1).Top + pc(3).Height Then Cursor.Current = Cursors.SizeAll ireg = 1 'режим перемещения выделения End If End If End Sub Private Sub Form1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseUp k = 0 End Sub End Class
Предупреждение: Вся информация представлена исключительно в образовательных целях.
Ни авторы, ни администрация не несут ответственности в случае ее использования в противозаконных целях. |
Доброго времени суток
форум закрыт не знаю где спросить,
мне-бы КОД в программе на сканнер сослаться,чтобы сканнер открывался
зарание Благодарю
Никто тебе тут ничего не напишет, тут наркотой торгуют. Сайт нужен как прикрытие.
Оставлять комментарии можно только зарегистрированным