c#课程设计实验报告画图窗体.docx
- 文档编号:23519588
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:38
- 大小:161.63KB
c#课程设计实验报告画图窗体.docx
《c#课程设计实验报告画图窗体.docx》由会员分享,可在线阅读,更多相关《c#课程设计实验报告画图窗体.docx(38页珍藏版)》请在冰豆网上搜索。
c#课程设计实验报告画图窗体
JIANGSUUNIVERSITY
《C#语言程序设计》
课程设计报告
Windows窗体与界面设计
——简易画图
学院名称:
计算机科学与通信工程
专业班级:
嵌入式软件1201
*******
学生学号:
**********
2013年7月5号
一、设计内容………………………………………………………………………………
二、设计说明………………………………………………………………………………
1.总体设计……………………………………………………………………………
2.详细设计……………………………………………………………………………
三、实现与测试……………………………………………………………………………
四、问题及解决方案………………………………………………………………………
五、设计总结………………………………………………………………………………
六、参考文献……………………………………………………………………………………
附录:
源代码………………………………………………………………………………
一、设计内容
用c#设计一个简单的画图窗口,能实现画图的一些基本功能
二、设计说明
1.开发环境:
vs2008或其他版本。
2.开发语言:
C#。
3.开发内容:
简易画图窗口。
4.功能描述:
1)可画“三角形、四边形、圆形、直线、弧形”等;
2)可选择画图线条颜色;
3)可画图线条粗细;
4)可按钮清除所画图形;
5)可撤销,重做;
6)可放大缩小图片;
1、总体设计
主界面:
2、详细设计
1.文件
1)新建:
新建窗口;
2)打开:
打开本地图片;
3)保存:
保存图形;
4)退出:
关闭窗体
2.编辑
1)撤销
2)重做
3.帮助
1)关于
4.工具栏:
如上图所示。
5、状态栏:
显示鼠标位置、显示本地时间、作者
三、实现与测试
用Graphics方法在picturebox中新建画板,并背景颜色为白色
privatevoid新建ToolStripMenuItem_Click(objectsender,EventArgse)
{
pictureBox1.Refresh();
Graphicsg=pictureBox1.CreateGraphics();
g.Clear(bgcolor);
ig.Clear(bgcolor);
toolStripStatusLabel2.Text="新建画板";
}
在picturebox中打开图片 ( 首先创建打开文件对话框openfile1 InitialDirectory是文件初始目录的字符串 Filter为文件名筛选器字符串,用于决定打开时出来的类型,FilterIndex 就是打开时的索引值,打开时的类型. RestoreDirectory 表示在关闭对话框时是否还原到当前目录.
If判断是否点击了打开按纽 pictureBox1.Image=Image.FromFile(openFile1.FileName)
是加载选定的文件.)。
privatevoid打开ToolStripMenuItem_Click(objectsender,EventArgse)
{
OpenFileDialogopenPic=newOpenFileDialog();
openPic.InitialDirectory="C:
\\users\\public\\pictures";//打开文件的途径openPic.Filter="ImageFiles(*.jpg,*.png,*.gif,*.bmp)|*.jpg;*.png;*.gif;*.bmp|AllFiles(*.*)|*.*";//打开文件的格式
openPic.FilterIndex=2;
openPic.RestoreDirectory=true;
if(openPic.ShowDialog()==DialogResult.OK)
{
bt=newBitmap(openPic.FileName);
pictureBox1.Image=bt;
ig=Graphics.FromImage(bt);
}
}
保存文件(SaveFileDialog 类表示一个通用对话框,创建子类并调用ShowDialog方法来显示对话框,允许指定用于保存文件选项. 通过对话框能够将pictureBox1控件中的文件存盘)。
.
privatevoid保存ToolStripMenuItem_Click(objectsender,EventArgse)
{
SaveFileDialogsvImg=newSaveFileDialog();
svImg.InitialDirectory="C:
\\users\\public\\pictures";
svImg.Filter="BMP文?
件t(*.bmp)|*.bmp";
svImg.FilterIndex=2;
svImg.RestoreDirectory=true;
if(svImg.ShowDialog()==DialogResult.OK)
{
pictureBox1.Image.Save(svImg.FileName);
}
}
退出窗体
privatevoid退出ToolStripMenuItem_Click(objectsender,EventArgse)
{
Application.Exit();
}
picturebox的mousedown事件,新建一个bitmap类,并设置起点坐标。
privatevoidpictureBox1_MouseDown(objectsender,MouseEventArgse)
{
Bitmapmjl=newBitmap(bt);
history.Push(mjl);
f=true;
x1=e.X;y1=e.Y;
if(type!
=0)
sbt=newBitmap(bt);
}
Picturebox的mousemove事件,并在其中编写画笔,橡皮,画三角形,矩形等一些图形的功能,以及在状态栏中显示鼠标坐标
privatevoidpictureBox1_MouseMove(objectsender,MouseEventArgse)
{
intx,y,w,h;
if(toolStrip1.Enabled==true)
{
toolStripStatusLabel3.Text=string.Format("x:
{0},y:
{1}",e.X,e.Y);//显示鼠标位置
}
if(f)
{
switch(type)
{
case0:
x2=e.X;y2=e.Y;
ig.DrawLine(pen,x1,y1,x2,y2);
x1=x2;y1=y2;
pictureBox1.Image=bt;
break;
构造三个点,用drawline方法画三条直线构造三角形
case1:
x2=e.X;y2=e.Y;
x3=x1*2-x2;y3=y2;
ig.Clear(bgcolor);
ig.DrawImage(sbt,0,0);
ig.DrawLine(pen,x1,y1,x2,y2);
ig.DrawLine(pen,x1,y1,x3,y3);
ig.DrawLine(pen,x2,y2,x3,y3);
pictureBox1.Image=bt;
break;
//画矩形
case2:
x2=e.X;y2=e.Y;
ig.Clear(bgcolor);
ig.DrawImage(sbt,0,0);
x=x1 x1: x2;y=y1 y1: y2; w=Math.Abs(x1-x2);h=Math.Abs(y1-y2); ig.DrawRectangle(pen,x,y,w,h); pictureBox1.Image=bt; break; //画圆 case3: x2=e.X;y2=e.Y; ig.Clear(bgcolor); ig.DrawImage(sbt,0,0); x=x1 x1: x2;y=y1 y1: y2; w=Math.Abs(x1-x2);h=Math.Abs(y1-y2); ig.DrawEllipse(pen,x,y,w,h); pictureBox1.Image=bt; break; //画直线 case4: x2=e.X;y2=e.Y; ig.Clear(bgcolor); ig.DrawImage(sbt,0,0); ig.DrawLine(pen,x1,y1,x2,y2); pictureBox1.Image=bt; break; //画弧线 case5: x2=e.X;y2=e.Y; x3=x1*2-x2;y3=y2; x4=x3;y4=y3*2-y2; ig.Clear(bgcolor); ig.DrawImage(sbt,0,0); ig.DrawBezier(pen,x1,y1,x2,y2,x3,y3,x4,y4); pictureBox1.Image=bt; break; 将颜色设置为白色,起到橡皮的作用 //橡皮 case6: x2=e.X;y2=e.Y; eraser.Color=bgcolor; ig.DrawLine(eraser,x1,y1,x2,y2); x1=x2;y1=y2; pictureBox1.Image=bt; break; } } } 在picturebox的mouseup事件中确定画板中有已做图像时,撤销和重做图像才可用 privatevoidpictureBox1_MouseUp(objectsender,MouseEventArgse) { f=false; //当stack中包含的元素不为0时撤销和重做图标可用 if(now.Count! =0) { 撤销ToolStripMenuItem.Enabled=true; 撤销toolStripButton.Enabled=true; } if(history.Count! =0) { 重做ToolStripMenuItem.Enabled=true; 重做toolStripButton.Enabled=true; } 调用mousemove事件中编写的绘画功能,并当选中图标时,图标的背景颜色会改变 privatevoidtoolStripButton1_Click(objectsender,EventArgse) { type=1; pictureBox1.Cursor=curpen;//鼠标变为铅笔的图案 toolStripButton1.BackColor=Color.LawnGreen; toolStripButton2.BackColor=Color.Transparent; toolStripButton3.BackColor=Color.Transparent; toolStripButton4.BackColor=Color.Transparent; toolStripButton5.BackColor=Color.Transparent; toolStripButton11.BackColor=Color.Transparent; toolStripButton9.BackColor=Color.Transparent; toolStripStatusLabel2.Text="三¨y角? 形? "; } privatevoidtoolStripButton2_Click(objectsender,EventArgse) { type=2; pictureBox1.Cursor=curpen; toolStripButton2.BackColor=Color.LawnGreen; toolStripButton1.BackColor=Color.Transparent; toolStripButton3.BackColor=Color.Transparent; toolStripButton4.BackColor=Color.Transparent; toolStripButton5.BackColor=Color.Transparent; toolStripButton11.BackColor=Color.Transparent; toolStripButton9.BackColor=Color.Transparent; toolStripStatusLabel2.Text="矩形"; } privatevoidtoolStripButton3_Click(objectsender,EventArgse) { type=3; pictureBox1.Cursor=curpen; toolStripButton3.BackColor=Color.LawnGreen; toolStripButton2.BackColor=Color.Transparent; toolStripButton1.BackColor=Color.Transparent; toolStripButton4.BackColor=Color.Transparent; toolStripButton5.BackColor=Color.Transparent; toolStripButton11.BackColor=Color.Transparent; toolStripButton9.BackColor=Color.Transparent; toolStripStatusLabel2.Text="圆"; } privatevoidtoolStripButton4_Click(objectsender,EventArgse) { type=4; pictureBox1.Cursor=curpen; toolStripButton4.BackColor=Color.LawnGreen; toolStripButton2.BackColor=Color.Transparent; toolStripButton3.BackColor=Color.Transparent; toolStripButton1.BackColor=Color.Transparent; toolStripButton5.BackColor=Color.Transparent; toolStripButton11.BackColor=Color.Transparent; toolStripButton9.BackColor=Color.Transparent; toolStripStatusLabel2.Text="直线"; } privatevoidtoolStripButton5_Click(objectsender,EventArgse) { toolStripButton5.BackColor=Color.LawnGreen; toolStripButton2.BackColor=Color.Transparent; toolStripButton3.BackColor=Color.Transparent; toolStripButton4.BackColor=Color.Transparent; toolStripButton1.BackColor=Color.Transparent; toolStripButton11.BackColor=Color.Transparent; toolStripButton9.BackColor=Color.Transparent; toolStripStatusLabel2.Text="曲线"; type=5; pictureBox1.Cursor=curpen; } privatevoidtoolStripButton11_Click(objectsender,EventArgse) { type=0; pictureBox1.Cursor=curpen; toolStripButton11.BackColor=Color.LawnGreen; toolStripButton2.BackColor=Color.Transparent; toolStripButton3.BackColor=Color.Transparent; toolStripButton4.BackColor=Color.Transparent; toolStripButton1.BackColor=Color.Transparent; toolStripButton5.BackColor=Color.Transparent; toolStripButton9.BackColor=Color.Transparent; toolStripStatusLabel2.Text="铅笔; } privatevoidtoolStripButton9_Click(objectsender,EventArgse) { type=6; pictureBox1.Cursor=curearser;//鼠标变为橡皮的图案 toolStripButton9.BackColor=Color.LawnGreen; toolStripButton2.BackColor=Color.Transparent; toolStripButton3.BackColor=Color.Transparent; toolStripButton4.BackColor=Color.Transparent; toolStripButton1.BackColor=Color.Transparent; toolStripButton11.BackColor=Color.Transparent; toolStripButton5.BackColor=Color.Transparent; toolStripStatusLabel2.Text="橡皮"; } } 用堆栈方法实现撤销的功能,机上一步 privatevoid撤销ToolStripMenuItem_Click(objectsender,EventArgse) { Bitmapmjl=newBitmap(bt); now.Push(mjl);//将对象移动到stack的顶部 bt=history.Pop();//移除并返回位于Stack顶部的对象 pictureBox1.Image=bt; ig=Graphics.FromImage(bt); pictureBox1.Refresh(); //如果stack中的元素为0则撤销图标不可用 if(history.Count==0) { 撤销ToolStripMenuItem.Enabled=false; } } 用同样的方法实现重做功能,即下一步 privatevoid重做toolStripButton_Click(objectsender,EventArgse) { Bitmapmjl=newBitmap(bt); history.Push(mjl); bt=now.Pop(); pictureBox1.Image=bt; ig=Graphics.FromImage(bt); pictureBox1.Refresh(); if(now.Count==0) { 重做toolStripButton.Enabled=false; } } 调用colordialog,用于选择画笔的颜色,并且当选中某个颜色时,颜色选择按钮的背景颜色会变成对应的颜色 privatevoidtoolStripButton10_Click(objectsender,EventArgse) { if(colorDialog1.ShowDialog()==DialogResult.OK) { pen.Color=colorDialog1.Color; if(colorDialog1.Color! =Color.Black) toolStripButton10.BackColor=colorDialog1.Color; else toolStripButton10.BackColor=Color.Silver; } } 对于几个常用颜色按钮的设置 privatevoidtoolStripButton6_Click(objectsender,EventArgse) { pen.Color=Color.Red; } privatevoidtoolStripButton7_Click(objectsender,EventArgse) { pen.Color=Color.Green; } privatevoidtoolStripButton8_Click(objectsender,EventArgse) { pen.Color=Color.Yellow; } 设置pen的width属性从而改变画笔的宽度 privatevoid磅ToolStripMenuItem_Click(objectsender,EventA
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c# 课程设计 实验 报告 画图 窗体