Public Class Form1
Dim Xstart, Ystart, Xold, Yold, X1, Y1 As Single, A As Integer
Dim GR As Graphics, P As Pen, B As Brush, цвет As Color, bmpPic, bmpPic1 As Bitmap
Sub Fon()
' Восстановить цвет фона кнопок
TSB11.BackColor = TS1.BackColor
TSB12.BackColor = TS1.BackColor
TSB14.BackColor = TS1.BackColor
TSB24.BackColor = TS1.BackColor
TSDB16.BackColor = TS1.BackColor
TSDB17.BackColor = TS1.BackColor
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
PB1.Width = Me.Width - PB1.Left - 30
PB1.Height = Me.Height - PB1.Top - 65
bmpPic = New Bitmap(PB1.Width, PB1.Height)
PB1.Image = bmpPic
GR = Graphics.FromImage(bmpPic)
PB1.DrawToBitmap(bmpPic, PB1.ClientRectangle)
TSCB21.Visible = False
цвет = Color.Black
P = New Pen(цвет, 2)
B = New SolidBrush(цвет)
TSB26.BackColor = CDL1.Color
End Sub
Private Sub TSB11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSB11.Click
'Кисть
Fon()
A = 1
TSB11.BackColor = Color.LightYellow
End Sub
Private Sub TSB12_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSB12.Click
'Карандаш
Fon()
A = 2
TSB12.BackColor = Color.LightYellow
End Sub
Private Sub TSB14_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSB14.Click
'Баллончик с краской
Fon()
A = 3
TSB14.BackColor = Color.LightYellow
End Sub
Private Sub Form1_SizeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.SizeChanged
PB1.Width = Me.Width - PB1.Left - 30
PB1.Height = Me.Height - PB1.Top - 65
End Sub
Private Sub TSB24_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSB24.Click
' Выбор инструмента определения размера кисти
TSCB21.Visible = True
End Sub
Private Sub PB1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PB1.MouseDown
If e.Button <> MouseButtons.Left Then Exit Sub
TSCB21.Visible = False
P.Color = цвет
B = New SolidBrush(цвет)
P.Width = TSCB21.Text
P.StartCap = Drawing2D.LineCap.Round ' закругленое начала
P.EndCap = Drawing2D.LineCap.Round ' закругленое конца
Xstart = e.X
Ystart = e.Y
Xold = e.X
Yold = e.Y
End Sub
Private Sub PB1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PB1.MouseMove
Dim I As Integer, L As Single
If e.Button <> MouseButtons.Left Then Exit Sub
P.Width = TSCB21.Text
If A = 1 Then
GR.DrawLine(P, Xold, Yold, e.X, e.Y)
End If
If A = 3 Then
L = P.Width
P.Width = 1
For I = 1 To 10
GR.DrawEllipse(P, e.X + Rnd() * L - L / 2, e.Y + Rnd() * L - L / 2, 1, 1)
Next I
End If
Xold = e.X
Yold = e.Y
PB1.Refresh()
End Sub
Private Sub PB1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PB1.MouseUp
If e.Button <> MouseButtons.Left Then Exit Sub
If e.X < Xstart Then X1 = e.X Else X1 = Xstart
If e.Y < Ystart Then Y1 = e.Y Else Y1 = Ystart
If A = 2 Then
GR.DrawLine(P, Xstart, Ystart, e.X, e.Y)
End If
If A = 4 Then
GR.DrawRectangle(P, X1, Y1, Math.Abs(e.X - Xstart), Math.Abs(e.Y - Ystart))
End If
If A = 6 Then
GR.FillRectangle(B, X1, Y1, Math.Abs(e.X - Xstart), Math.Abs(e.Y - Ystart))
End If
If A = 5 Then
GR.DrawEllipse(P, X1, Y1, Math.Abs(e.X - Xstart), Math.Abs(e.Y - Ystart))
End If
If A = 7 Then
GR.FillEllipse(B, X1, Y1, Math.Abs(e.X - Xstart), Math.Abs(e.Y - Ystart))
End If
PB1.Refresh()
End Sub
Private Sub TSB21_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSB21.Click
'Сохранение рисунка
Fon()
SFD1.Filter = "Bitmap |*.bmp|Jpeg |*.jpg| Все файлы | *.*"
If SFD1.ShowDialog = DialogResult.OK Then
PB1.Image.Save(SFD1.FileName) ', System.Drawing.Imaging.ImageFormat.Bmp)
Else
End If
End Sub
Private Sub TSB22_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSB22.Click
'Чтение рисунка
Dim П As New Rectangle(0, 0, PB1.Width, PB1.Height), T As New Point(0, 0)
Fon()
A = 0
OFD1.Filter = "Jpeg |*.jpg|Bitmap |*.bmp| Все файлы | *.*"
If OFD1.ShowDialog = DialogResult.OK Then
Dim bmpPic1 As New Bitmap(OFD1.FileName)
GR.DrawImage(bmpPic1, T) ' Расположить начиная с точки Т
'GR.DrawImage(bmpPic1, П) ' Вписать в прямоугольную область
PB1.Refresh()
End If
End Sub
Private Sub TSB25_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSB25.Click
' Выбор цвета
CDL1.ShowDialog()
цвет = CDL1.Color
TSB26.BackColor = CDL1.Color
End Sub
Private Sub TSB27_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSB27.Click
'Очистка поля
GR.Clear(PB1.BackColor)
PB1.Refresh()
End Sub
Private Sub НетЗаливкиTSM1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles НетЗаливкиTSM1.Click
'Прямоугольник без заливки
Fon()
A = 4
TSDB16.BackColor = Color.LightYellow
End Sub
Private Sub ЗаливкаTSM1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ЗаливкаTSM1.Click
'Прямоугольник с заливкой
Fon()
A = 6
TSDB16.BackColor = Color.LightYellow
End Sub
Private Sub нет_заливки_TSM2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles нет_заливки_TSM2.Click
'Круг без заливки
Fon()
A = 5
TSDB17.BackColor = Color.LightYellow
End Sub
Private Sub Заливка_TSM2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Заливка_TSM2.Click
'Круг с заливкой
Fon()
A = 7
TSDB17.BackColor = Color.LightYellow
End Sub
End Class