实验二:用winform实现画图
实验目的
构造属于你的专属画图程序,可参考系统自带的绘图板
环境
- 操作系统: Windows 10 X64
- IDE: visual studio 2017
- 语言:C#
界面布局及控件使用
- 整个页面 :Panel
- 文件菜单 :MenuStrip
- 主页,查看菜单 :TabControl
- 绘图板 :PictureBox
- 控制绘图板大小 :PictureBox
- 工具、图形按钮 :Button
- 粗细 :Label
- 实线虚线 :Label
- 填充按钮 :Label
- 功能模块分区 :Panel
- 功能模块分区的名字 :Label
- 颜色板 :自定义控件名为 userControl1
- 左下角的实时坐标 :StatusStrip
- 按钮的文本提示 : ToolTip
界面展示
Point1–画布画板
画布相当于一张纸,我们使用两张纸,一张originalimage用于保留最终绘图并贴在画板上;一张interimage用于保存中间绘图痕迹。
比如画一个矩形
- 画图前先将中间画布初始化为原始画布(去掉绘图痕迹)
- 将矩形画在在中间画布
- 在鼠标释放时将中间画布复制给原始画布
- 将原始画布贴到画板上
Point2–颜色板的实现
新建及使用
- 新建项目->选择visual C# ->Windows 桌面 ->Windows窗体控件库
- 完成编辑后,在项目文件中找到 bin文件下的后缀为.dll的文件拖拽进工具箱即可。
完成效果:
使用的控件:
- 颜色按钮:Button
- 编辑颜色按钮:ColorDialog
- 颜色1,2面板:Panel
功能实现:
-
选择颜色,判断改变颜色1还是颜色2
private void button_Click(object sender, EventArgs e) { Button currentButton = (Button)sender; currentLabel.BackColor = currentButton.BackColor; if(currentLabel==label1) { label1.BackColor = currentButton.BackColor; color1 = currentButton.BackColor; } else { label7.BackColor = currentButton.BackColor; color2 = currentButton.BackColor; } }
-
颜色1颜色2切换
方法:设置一个currentlabel指向当前颜色labelprivate void color1_Click(object sender, EventArgs e) { currentLabel = label1; label3.BackColor = Color.PowderBlue; label4.BackColor = Color.Transparent; } private void color2_Click(object sender, EventArgs e) { currentLabel = label7; label4.BackColor = Color.PowderBlue; label3.BackColor = Color.Transparent; }
-
colordialog 调用颜色对话框,并将颜色添加到可用按钮中
重点:colorDialog1.ShowDialog()private void makecolor_Click(object sender, EventArgs e) { if (colorDialog1.ShowDialog() == DialogResult.OK) { Color mycolor = colorDialog1.Color; for (int i = 0; i < haveUse; i++) { if (allButton[i].BackColor == mycolor)//与第i个重复,则从第i+1个到num-1个都向前移动一格 { for (int k = i; k < NUM - 1; k++) { allButton[k].BackColor = allButton[k + 1].BackColor; } haveUse--; break; } } if (haveUse == NUM)//已经满了,前移一格 { for (int i = 0; i < NUM - 1; i++) { allButton[i] = allButton[i + 1]; } allButton[NUM - 1].BackColor = mycolor; haveUse++; } else//还没满 { allButton[haveUse].BackColor = mycolor; allButton[haveUse].Enabled = true; haveUse++; } } }
Point3–绘制图形
重点:绘制图形的函数
//使用Graphics对象实现
switch (type)
{
case "