📄 formmain.vb
字号:
lbPen1.BackColor = Color.Black
Panel2.BackColor = Color.White
lbPen2.BackColor = Color.Black
Panel4.BackColor = Color.White
lbPen4.BackColor = Color.Black
Panel5.BackColor = Color.White
lbPen5.BackColor = Color.Black
'将其他画笔的颜色复原
Case 10
Panel4.BackColor = Color.Blue
lbPen4.BackColor = Color.White
'达到反白的效果
Panel1.BackColor = Color.White
lbPen1.BackColor = Color.Black
Panel2.BackColor = Color.White
lbPen2.BackColor = Color.Black
Panel3.BackColor = Color.White
lbPen3.BackColor = Color.Black
Panel5.BackColor = Color.White
lbPen5.BackColor = Color.Black
'将其他画笔的颜色复原
Case 20
Panel5.BackColor = Color.Blue
lbPen5.BackColor = Color.White
'达到反白的效果
Panel1.BackColor = Color.White
lbPen1.BackColor = Color.Black
Panel2.BackColor = Color.White
lbPen2.BackColor = Color.Black
Panel3.BackColor = Color.White
lbPen3.BackColor = Color.Black
Panel4.BackColor = Color.White
lbPen4.BackColor = Color.Black
'将其他画笔的颜色复原
End Select
iWidth = width
'记下用户选择的画笔宽度
End Sub
Private Sub InitPen(ByVal pen As Integer)
Dim i As Integer
For i = 1 To num
ToolBar1.Buttons.Item(i - 1).Pushed = False
Next
ToolBar1.Buttons.Item(pen).Pushed = True
'使ToolBar1的各按钮中只有一个按钮保持“按下”状态
iButton = pen
'记下用户选择的画笔
Select Case pen
Case 0, 2, 4, 7, 10, 11, 14
Label4.Visible = True
Label5.Visible = False
pnlWidth.Visible = True
pnlIcon.Visible = False
pnlStyle.Visible = False
Label1.Visible = True
pnlColor1.Visible = True
pnlColor2.Visible = False
mColor.Enabled = True
mColor2.Enabled = False
mWidth.Enabled = True
mIconSet.Enabled = False
'画笔为单线条画笔
Case 1
Label4.Visible = True
Label5.Visible = False
pnlWidth.Visible = True
pnlIcon.Visible = False
pnlStyle.Visible = False
Label1.Visible = False
pnlColor1.Visible = False
pnlColor2.Visible = False
mColor.Enabled = False
mColor2.Enabled = False
mWidth.Enabled = True
mIconSet.Enabled = False
'用户选择了“橡皮”
Case 3
Label4.Visible = False
Label5.Visible = True
pnlWidth.Visible = False
pnlIcon.Visible = True
pnlStyle.Visible = False
Label1.Visible = False
pnlColor1.Visible = False
pnlColor2.Visible = False
mColor.Enabled = False
mColor2.Enabled = False
mWidth.Enabled = False
mIconSet.Enabled = True
If bIcoDef = False Then
If OpenFileDialog1.ShowDialog = DialogResult.OK Then
icoPen = New Icon(OpenFileDialog1.FileName)
End If
'打开图标文件
bIcoDef = True
End If
'画笔为图标画笔
Case 5, 8, 12, 16
Label4.Visible = True
Label5.Visible = False
pnlWidth.Visible = True
pnlIcon.Visible = False
pnlStyle.Visible = False
Label1.Visible = True
pnlColor1.Visible = True
pnlColor2.Visible = False
mColor.Enabled = True
mColor2.Enabled = False
mWidth.Enabled = True
mIconSet.Enabled = False
'画笔为实心画笔
Case 6, 9, 13, 17
Label4.Visible = False
Label5.Visible = True
pnlWidth.Visible = False
pnlIcon.Visible = False
pnlStyle.Visible = True
Label1.Visible = True
pnlColor1.Visible = False
pnlColor2.Visible = True
mColor.Enabled = False
mColor2.Enabled = True
mWidth.Enabled = False
mIconSet.Enabled = False
'画笔为指定风格的画笔
Case 10, 11, 12, 13, 14, 15, 16, 17
ReDim p(-1)
'清空并重置动态数组p
End Select
End Sub
Private Sub formMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
g = PictureBox1.CreateGraphics
iButton = 0
iWidth = 1
bIcoDef = False
ReDim p(-1)
'变量初始化
Label4.Visible = True
Label5.Visible = False
pnlWidth.Visible = True
pnlIcon.Visible = False
pnlStyle.Visible = False
mColor2.Enabled = False
mIconSet.Enabled = False
Label1.Visible = True
pnlColor1.Visible = True
pnlColor2.Visible = False
OpenFileDialog1.Filter = "ico文件|*.ico"
Dim i As Integer
For i = 1 To 52
cbStyle.Items.Add(CStr(i))
Next
'控件属性初始化
End Sub
Private Sub ToolBar1_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles ToolBar1.ButtonClick
InitPen(ToolBar1.Buttons.IndexOf(e.Button))
'根据用户选择的画笔对程序进行初始化
End Sub
Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
If e.Button = MouseButtons.Left Then
p1.X = e.X
p1.Y = e.Y
End If
' 当鼠标的左键被按下时,将此时鼠标的坐标赋给p1
End Sub
Private Sub PictureBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp
If e.Button = MouseButtons.Left Then
p2.X = e.X
p2.Y = e.Y
End If
'当鼠标的左键被抬起时,将此时鼠标的坐标赋给p2
Select Case iButton
Case 2
Dim pn As Pen = New Pen(lbColor.BackColor, iWidth)
g.DrawLine(pn, p1, p2)
'从坐标p1到坐标p2画直线
Case 4, 5, 6, 7, 8, 9
Dim pStart As Point, pEnd As Point
If p1.X < p2.X Then
If p1.Y < p2.Y Then
pStart = p1
pEnd = p2
'坐标p1在坐标p2的左上方向
Else
pStart.X = p1.X
pStart.Y = p2.Y
pEnd.X = p2.X
pEnd.Y = p1.Y
'坐标p1在坐标p2的左下方向
End If
Else
If p1.Y < p2.Y Then
pStart.X = p2.X
pStart.Y = p1.Y
pEnd.X = p1.X
pEnd.Y = p2.Y
'坐标p1在坐标p2的右上方向
Else
pStart = p2
pEnd = p1
'坐标p1在坐标p2的右下方向
End If
End If
'根据坐标p1和坐标p2的相对位置确定坐标pStart和坐标pEnd
Select Case iButton
Case 4
Dim pn As Pen = New Pen(lbColor.BackColor, iWidth)
Dim rect As Rectangle = New Rectangle(pStart.X, pStart.Y, pEnd.X - pStart.X, pEnd.Y - pStart.Y)
g.DrawRectangle(pn, rect)
'从点以p1到坐标p2的连线为对角线画空心矩形
Case 5
Dim pn As Pen = New Pen(lbColor.BackColor, iWidth)
Dim rect As Rectangle = New Rectangle(pStart.X, pStart.Y, pEnd.X - pStart.X, pEnd.Y - pStart.Y)
Dim br As SolidBrush = New SolidBrush(lbColor.BackColor)
g.FillRectangle(br, rect)
'从点以p1到坐标p2的连线为对角线画实心矩形
Case 6
Dim pn As Pen = New Pen(lbColor.BackColor, iWidth)
Dim rect As Rectangle = New Rectangle(pStart.X, pStart.Y, pEnd.X - pStart.X, pEnd.Y - pStart.Y)
Dim iStyle As Integer
If cbStyle.Text = "" Then
iStyle = 0
Else
iStyle = cbStyle.Items.IndexOf(cbStyle.Text)
End If
Dim br As HatchBrush = New HatchBrush(iStyle, lbLineColor.BackColor, lbFillColor.BackColor)
g.FillRectangle(br, rect)
'从点以p1到坐标p2的连线为对角线画指定填充风格的矩形
Case 7
Dim pn As Pen = New Pen(lbColor.BackColor, iWidth)
Dim rect As Rectangle = New Rectangle(pStart.X, pStart.Y, pEnd.X - pStart.X, pEnd.Y - pStart.Y)
g.DrawEllipse(pn, rect)
'画以rect为内矩形的空心椭圆
Case 8
Dim pn As Pen = New Pen(lbColor.BackColor, iWidth)
Dim rect As Rectangle = New Rectangle(pStart.X, pStart.Y, pEnd.X - pStart.X, pEnd.Y - pStart.Y)
Dim br As SolidBrush = New SolidBrush(lbColor.BackColor)
g.FillEllipse(br, rect)
'画以rect为内矩形的实心椭圆
Case 9
Dim pn As Pen = New Pen(lbColor.BackColor, iWidth)
Dim rect As Rectangle = New Rectangle(pStart.X, pStart.Y, pEnd.X - pStart.X, pEnd.Y - pStart.Y)
Dim iStyle As Integer
If cbStyle.Text = "" Then
iStyle = 0
Else
iStyle = cbStyle.Items.IndexOf(cbStyle.Text)
End If
Dim br As HatchBrush = New HatchBrush(iStyle, lbLineColor.BackColor, lbFillColor.BackColor)
g.FillEllipse(br, rect)
'从点以p1到坐标p2的连线为对角线画指定填充风格的椭圆矩形
End Select
Case 10
Dim pn2 As Pen = New Pen(Color.White)
'定义白色画笔作为擦除上次所画曲线的橡皮擦
If UBound(p) > 1 Then
g.DrawCurve(pn2, p)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -