C#课程设计画图工具.docx
《C#课程设计画图工具.docx》由会员分享,可在线阅读,更多相关《C#课程设计画图工具.docx(11页珍藏版)》请在冰豆网上搜索。
C#课程设计画图工具
C#课程设计
班级:
实验项目名称:
画图工具实现
学号:
学生姓名:
一、实验目的
(本次实验所涉及并要求掌握的知识点)
1.通过实验掌握windows程序设计的基础,以及常见windows控件的使用;
2.学习掌握画图工具实现的思想以及编程方法;
二、实验内容与设计思想
(设计思路、主要数据结构、主要代码结构、主要代码段分析、电路图等)
实现记事本的Window运用程序,其功能能够实现画图工具的功能(可参见Window附件中的画图工具基本格式);
三、实验使用环境
(本次实验所使用的平台和相关软件)
Windows操作系统MicrosoftVisualStudio2010编程软件
四、实验步骤和调试过程(实验步骤、测试数据设计、测试结果分析)
画图工具的实现:
设计过程主要通过运用Window工具,
其实现代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
namespacemydrawingpicture
{
publicpartialclassForm1:
Form
{
Graphicsg;
PointpStart,pEnd;//定义画图的起始终点
intChoiceGrap;//所选择图形枚举
intpenWidth;//画笔宽度
enummySelected
{
Pencil,//铅笔
Line,//直线
Ellipse,//空心椭圆
FillEllipse,//填充椭圆
Rec,//空心矩形
FillRec,//填充矩形
Eraser//橡皮擦
};
publicForm1()
{
InitializeComponent();
g=this.CreateGraphics();
}
privatevoidpictureBox1_Paint(objectsender,PaintEventArgse)
{
}
privatevoidForm1_Load(objectsender,EventArgse)
{
g=this.pictureBox1.CreateGraphics();
ChoiceGrap=(int)mySelected.Pencil;//默认选择画笔工具
penWidth=1;
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
}
privatevoidbtnTool_Click(objectsender,EventArgse)
{
ChoiceGrap=Convert.ToInt32(((Button)sender).Tag);
}
privatevoidbtnLine(objectsender,EventArgse)
{
//把所有按钮的背景颜色都设为Black
button9.BackColor=Color.White;
button10.BackColor=Color.White;
button11.BackColor=Color.White;
button12.BackColor=Color.White;
button13.BackColor=Color.White;
((Button)sender).BackColor=Color.Black;//选中的按钮背景颜色为黑色
penWidth=Convert.ToInt32(((Button)sender).Tag);//选择宽度按钮的Tag值设为画笔宽度
}
privatevoidbtnColor(objectsender,EventArgse)
{
if(((Button)sender).Text=="C")
{
if(colorDialog1.ShowDialog()==DialogResult.OK)
{
button14.BackColor=colorDialog1.Color;
}
}
else{button14.BackColor=((Button)sender).BackColor;}
}
privatevoidChange_Point()
{
PointpTemp=newPoint();//定义临起点
if(pStart.X{
if(pStart.Y>pEnd.Y)
{
pTemp.Y=pStart.Y;
pStart.Y=pEnd.Y;
pEnd.Y=pTemp.Y;
}
}
if(pStart.X>pEnd.X)
{
if(pStart.Y{
pTemp.X=pStart.X;
pStart.X=pEnd.X;
pEnd.X=pTemp.X;
}
if(pStart.Y>pEnd.Y)
{
pTemp=pStart;
pStart=pEnd;
pEnd=pTemp;
}
}
}
privatevoidpictureBox1_MouseDown(objectsender,MouseEventArgse)
{
if(e.Button==MouseButtons.Left)//如果单击鼠标左键,则将当作前点坐标赋予起始点
{
pStart.X=e.X;
pStart.Y=e.Y;
}
}
privatevoidpictureBox1_MouseMove(objectsender,MouseEventArgse)
{
toolStripStatusLabel1.Text="版权所有:
X*Y"+"X:
"+e.X.ToString()+",Y:
"+e.Y.ToString();
if(e.Button==MouseButtons.Left)
{
switch(ChoiceGrap)
{
case(int)mySelected.Pencil:
//选择的是铅笔
Penpen1=newPen(button14.BackColor,penWidth);
pEnd.X=e.X;
pEnd.Y=e.Y;
g.DrawLine(pen1,pStart,pEnd);
pStart=pEnd;//将已经绘制的终点作为下一次绘制的起点
break;
case(int)mySelected.Eraser:
Penpen2=newPen(Color.White,penWidth);//定义白色画笔作为擦除效果
pEnd.X=e.X;
pEnd.Y=e.Y;
g.DrawLine(pen2,pStart,pEnd);
pStart=pEnd;//将已经绘制的终点作为下一次绘制的起点
break;
default:
break;
}
}
}
privatevoidpictureBox1_MouseUp(objectsender,MouseEventArgse)
{
if(e.Button==MouseButtons.Left)//如果用户按下的是鼠标左键,记录终点坐标
{
pEnd.X=e.X;
pEnd.Y=e.Y;
switch(ChoiceGrap)
{
case(int)mySelected.Line:
//选择的是直线
Penpen1=newPen(button14.BackColor,penWidth);
g.DrawLine(pen1,pStart,pEnd);
break;
case(int)mySelected.Ellipse:
//选择的是空心椭圆
Change_Point();
Penpen2=newPen(button14.BackColor,penWidth);
g.DrawEllipse(pen2,pStart.X,pStart.Y,pEnd.X-pStart.X,pEnd.Y-pStart.Y);
break;
case(int)mySelected.FillEllipse:
//选择的是实心椭圆
Change_Point();
SolidBrushmyBrush=newSolidBrush(button14.BackColor);
Rectanglerec=newRectangle(pStart.X,pStart.Y,pEnd.X-pStart.X,pEnd.Y-pStart.Y);
g.FillEllipse(myBrush,rec);
break;
default:
break;
}
}
}
privatevoidbtnNew_Click(objectsender,EventArgse)
{
pictureBox1.Refresh();//刷新
}
privatevoidbtnExit_Click(objectsender,EventArgse)
{
this.Close();//关闭
}
}
}
相关截图如下:
五、实验小结(实验中遇到的问题及解决过程、实验中产生的错误及原因分析、实验体会和收获)
1.本实验过后,掌握了Window工具中的MenuStript、GDI的作用以及使用,利
用其成功的完成了记事本的格式设计
2.学习到了文本编辑器的实现方法,能够通过查询资料用代码将其实现;
3.在本次文本编辑器的实现过程中,学习到了一些重要的类以及函数
六、附录
参考文献和相关资料
C#程序设计教程第二版