c#课程设计实验报告画图窗体.docx

上传人:b****7 文档编号:23519588 上传时间:2023-05-17 格式:DOCX 页数:38 大小:161.63KB
下载 相关 举报
c#课程设计实验报告画图窗体.docx_第1页
第1页 / 共38页
c#课程设计实验报告画图窗体.docx_第2页
第2页 / 共38页
c#课程设计实验报告画图窗体.docx_第3页
第3页 / 共38页
c#课程设计实验报告画图窗体.docx_第4页
第4页 / 共38页
c#课程设计实验报告画图窗体.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

c#课程设计实验报告画图窗体.docx

《c#课程设计实验报告画图窗体.docx》由会员分享,可在线阅读,更多相关《c#课程设计实验报告画图窗体.docx(38页珍藏版)》请在冰豆网上搜索。

c#课程设计实验报告画图窗体.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 公共行政管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1