图形学课设计算机软件及应用IT计算机专业资料.docx

上传人:b****8 文档编号:11343463 上传时间:2023-02-28 格式:DOCX 页数:24 大小:80.94KB
下载 相关 举报
图形学课设计算机软件及应用IT计算机专业资料.docx_第1页
第1页 / 共24页
图形学课设计算机软件及应用IT计算机专业资料.docx_第2页
第2页 / 共24页
图形学课设计算机软件及应用IT计算机专业资料.docx_第3页
第3页 / 共24页
图形学课设计算机软件及应用IT计算机专业资料.docx_第4页
第4页 / 共24页
图形学课设计算机软件及应用IT计算机专业资料.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

图形学课设计算机软件及应用IT计算机专业资料.docx

《图形学课设计算机软件及应用IT计算机专业资料.docx》由会员分享,可在线阅读,更多相关《图形学课设计算机软件及应用IT计算机专业资料.docx(24页珍藏版)》请在冰豆网上搜索。

图形学课设计算机软件及应用IT计算机专业资料.docx

图形学课设计算机软件及应用IT计算机专业资料

二0一五~二0一六学年第一学期

计算机科学与技术学院

课程设计报告书

 

题目:

JAVA简单画图程序

课程名称:

图形学与平面设计

班级:

学号:

姓名:

指导教师:

二0一五年十一月二十七日

一设计目的

课程设计是信息与计算科学专业集中实践性环节之一,是学习完《计算机图形学》课程后进行的一次全面的综合练习。

其目的是:

(1)要达到理论与实际应用相结合,使学生能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养良好的程序设计技能。

(2)在实践中认识为什么要学习数据结构,掌握数据结构、程序设计语言、程序设计技术之间的关系,是前面所学知识的综合和回顾

课程设计是我们的主要教学实践环节,通过课程设计我们围绕基础课或者专业课,运用学的知识,结合实际应用设计而进行的一次综合分析设计能力的训练.

课程设计的宗旨在与培养我们在本课程范围内,初步掌握解决实际应用问题时所应具备的查阅资料,综合运用所学知识的能力,为毕业设计及今后从事专业工作打下基础.

通过本次课程设计,能够锻炼我们的动手能力,使我们能够很好的巩固上一个学期所学的知识内容,掌握工程软件设计的基本方法,强化了我们上机动手的能力,通过这次的课程设计,我们感觉到了以前学习的不足,以及在学习的过程中遇到的问题,能使我们对学过的知识加深理解,为后续学的计算机专业课,打下坚实的基础.

 

二总体设计

简单绘图板程序

此图形图像处理机具有如下功能:

1能由鼠标控制绘制直线、矩形、椭圆,并能控制线条的颜色

2能改变矩形和椭圆。

3能打开和保存为图形文件。

4能打开图片。

5能通过参数对图片进行缩放

我们做的这个绘图板是一个简易的类似Windows画图工具的简单绘图板程序,我们设计

了主要有菜单栏,状态栏等基本元素,能够实现简单的集合画图,也能够在鼠标控制下进行手动画图.通过测试程序能够顺利运行.要求利用C#的编程思想以及组件开发原理来完成系统的设计。

 

主要流程图如下:

三源代码

usingSystem;

usingSystem.Collections.Generic;

usingSystem.ComponentModel;

usingSystem.Data;

usingSystem.Drawing;

usingSystem.Text;

usingSystem.Windows.Forms;

usingSystem.Drawing.Drawing2D;

usingSystem.Runtime.Serialization.Formatters.Binary;

usingSystem.IO;

usingSystem.Xml.Serialization;

usingSystem.Drawing.Imaging;

namespace画图板

{publicenumShapeType//绘图类型

{

FreeDraw,Eraser,Line,Rectangle,Ellipse,FillEllipse,FillRectangle,Curve,Path,Pick,Polygon,Text,Circle,FillCircle,SelectRectangle,SelectFillRectangle

}

publicenumSizeGrip//区块的位置

{None=0,Top,Bottom,Left,Right,TopLeft,TopRight,BottomLeft,BottomRight,All

}

publicpartialclassMainForm:

Form

{

#region初始化

publicMainForm()

{

InitializeComponent();

clr=colorHatch1.CurrentColor;

}

{

get

{

if(sizeGripRectList==null)

{

sizeGripRectList=newDictionary();

}

returnsizeGripRectList;

}

}

#endregion

#region绘图工具事件

privatevoidbtnFree_Click(objectsender,EventArgse)

{

Initl();

type=ShapeType.FreeDraw;

}

privatevoidbtnCurve_Click(objectsender,EventArgse)

{

Initl();

type=ShapeType.Curve;

tmpCurve=newCurve(clr);

}

privatevoidbtnRectangle_Click(objectsender,EventArgse)

{

Initl();

type=ShapeType.Rectangle;

}

privatevoidbtnFilledRectangle_Click(objectsender,EventArgse)

{

Initl();

type=ShapeType.FillRectangle;

}

privatevoidbtnCircle_Click(objectsender,EventArgse)

{

Initl();

type=ShapeType.Circle;

}

privatevoidbtnFillCircle_Click(objectsender,EventArgse)

{

Initl();

type=ShapeType.FillCircle;

}

privatevoidbtnEllipse_Click(objectsender,EventArgse)

{

Initl();

type=ShapeType.Ellipse;

}

privatevoidbtnFillEllipse_Click(objectsender,EventArgse)

{

Initl();

type=ShapeType.FillEllipse;

}

privatevoidbtnPolygon_Click(objectsender,EventArgse)

{

Initl();

type=ShapeType.Polygon;

tmpPolygon=newPolygon(clr);

}

privatevoidbtnText_Click(objectsender,EventArgse)

{

Initl();

type=ShapeType.Text;

label1.Visible=true;

}

privatevoidbtnPath_Click(objectsender,EventArgse)

{

type=ShapeType.Path;

}

privatevoidbtnPick_Click(objectsender,EventArgse)

{

Initl();

type=ShapeType.Pick;

}

#endregion

#region图片框事件

privatevoidpictureBox1_MouseDown(objectsender,MouseEventArgse)

{

if(e.Button==MouseButtons.Left)

{

p1=newPoint(e.X,e.Y);

if(finish)

{

if(sizegrip==SizeGrip.All)

{

tempmove=p1;

return;

}

else

{

if(textBox1.Visible)

{

shape=newText(clr,textBox1.Text,textBox1.Font,newPoint(textBox1.Location.X-98,textBox1.Location.Y-34));

textBox1.Text="";

textBox1.Visible=false;

label1.Visible=false;

}

shapeList.Add(shape);

finish=false;

StartPolygon=true;

Selectshape.Clear();

tmpPolygon=newPolygon(clr);

tmpCurve=newCurve(clr);

pictureBox1.Refresh();

Points.Clear();

}

}

if(type==ShapeType.Polygon)

{

if(StartPolygon)

{

tmpPolygon.AddPoint(p1);

selectRecStart=selectRecEnd=p1;

StartPolygon=false;

}

elseif(p1==tmpPolygon.Points[0])

{

foreach(PointpintmpPolygon.Points)

{

selectRecStart=newPoint(Math.Min(selectRecStart.X,p.X),Math.Min(selectRecStart.Y,p.Y));

selectRecEnd=newPoint(Math.Max(selectRecEnd.X,p.X),Math.Max(selectRecEnd.Y,p.Y));

}

selectRecSize=newSize(selectRecEnd.X-selectRecStart.X,selectRecEnd.Y-selectRecStart.Y);

finish=true;

}

else

{

shape=newPolygon(clr,tmpPolygon.Points,p1,width);

pictureBox1.Refresh();

}

}

elseif(type==ShapeType.Curve)

{

if(StartPolygon)

{

tmpCurve.AddPoint(p1);

selectRecStart=selectRecEnd=p1;

StartPolygon=false;

}

elseif(tmpCurve.Points.Count==3)

{

tmpCurve.AddPoint(p1);

foreach(PointpintmpCurve.Points)

{

selectRecStart=newPoint(Math.Min(selectRecStart.X,p.X),Math.Min(selectRecStart.Y,p.Y));

selectRecEnd=newPoint(Math.Max(selectRecEnd.X,p.X),Math.Max(selectRecEnd.Y,p.Y));

}

selectRecSize=newSize(selectRecEnd.X-selectRecStart.X,selectRecEnd.Y-selectRecStart.Y);

finish=true;

}

else

{

shape=newCurve(clr,tmpCurve.Points,p1,width);

pictureBox1.Refresh();

}

}

elseif(type==ShapeType.FreeDraw||type==ShapeType.Eraser)

{Points.Add(p1);}

elseif(type==ShapeType.Pick)

{

clr=colorHatch1.CurrentColor=CreateImage().GetPixel(e.X,e.Y);

}

}

if(e.Button==MouseButtons.Right)

{

finish=false;

StartPolygon=true;

Selectshape.Clear();

tmpPolygon=newPolygon(clr);

tmpCurve=newCurve(clr);

shape=null;

textBox1.Text="";

textBox1.Visible=false;

pictureBox1.Refresh();

Points.Clear();

}

}

privatevoidpictureBox1_MouseMove(objectsender,MouseEventArgse)

{

if(box.Contains(e.X,e.Y))

{

if(type==ShapeType.Eraser)

this.Cursor=defaultcursor;

else

{

this.defaultcursor=Cursors.Cross;

this.Cursor=this.defaultcursor;

}

}

break;

caseShapeType.FillCircle:

shape=newFillCircle(clr,p1,p2);

break;

default:

break;

}

pictureBox1.Refresh();

}

}

privatevoidpictureBox1_MouseUp(objectsender,MouseEventArgse)

{

if(e.Button==MouseButtons.Left)

{

if(type==ShapeType.Eraser||type==ShapeType.FreeDraw)

{

shapeList.Add(shape);

Points=newList();

return;

}

elseif(type==ShapeType.Pick)

{

colorHatch1.CurrentColor=CreateImage().GetPixel(e.X,e.Y);

return;

}

elseif(type==ShapeType.Polygon||type==ShapeType.Curve)

{}

else

{

if(p1==newPoint(e.X,e.Y))

return;

}

if(!

finish)

{

if(type==ShapeType.Polygon)

{

tmpPolygon.AddPoint(newPoint(e.X,e.Y));

}

elseif(type==ShapeType.Curve)

{

tmpCurve.AddPoint(newPoint(e.X,e.Y));

}

else

{

startpoint=p1;

endpoint=newPoint(e.X,e.Y);

finish=true;

selectRecStart=newPoint(Math.Min(p1.X,p2.X),Math.Min(p1.Y,p2.Y));

selectRecSize=newSize(Math.Abs(p1.X-p2.X),Math.Abs(p1.Y-p2.Y));

}

}

privatevoidpictureBox1_MouseDoubleClick(objectsender,MouseEventArgse)

{

if(type==ShapeType.Polygon)

{

foreach(PointpintmpPolygon.Points)

{

selectRecStart=newPoint(Math.Min(selectRecStart.X,p.X),Math.Min(selectRecStart.Y,p.Y));

selectRecEnd=newPoint(Math.Max(selectRecEnd.X,p.X),Math.Max(selectRecEnd.Y,p.Y));

}

selectRecSize=newSize(selectRecEnd.X-selectRecStart.X,selectRecEnd.Y-selectRecStart.Y);

finish=true;

}

elseif(type==ShapeType.Curve)

{

foreach(PointpintmpCurve.Points)

{

selectRecStart=newPoint(Math.Min(selectRecStart.X,p.X),Math.Min(selectRecStart.Y,p.Y));

selectRecEnd=newPoint(Math.Max(selectRecEnd.X,p.X),Math.Max(selectRecEnd.Y,p.Y));

}

selectRecSize=newSize(selectRecEnd.X-selectRecStart.X,selectRecEnd.Y-selectRecStart.Y);

finish=true;

privatevoidpictureBox1_Paint(objectsender,PaintEventArgse)

{

g=e.Graphics;

if(shapeList.Count>0)

{

foreach(ShapesinshapeList)

s.Draw(g);

}

if(Selectshape.Count>0)

{

foreach(ShapesinSelectshape)

s.Draw(g);

}

if(shape!

=null)

shape.Draw(g);

}

privatevoidcolorHatch1_ColorChange(objectsender,MyControl.ColorHatch.ColorChangeEventArgse)

{

clr=colorHatch1.CurrentColor;

textBox1.ForeColor=clr;

if(StartPolygon==false)

switch(type)

{

caseShapeType.Curve:

tmpCurve=newCurve(clr,tmpCurve.Points,width);break;

caseShapeType.Polygon:

tmpPolygon=newPolygon(clr,tmpPolygon.Points,width);break;

}

///初始化按键

///

privatevoidInitl()

{

if(finish)

{

if(textBox1.Visible)

{

shape=newText(clr,textBox1.Text,textBox1.Font,newPoint(textBox1.Location.X-98,textBox1.Location.Y-34));

textBox1.Text="";

textBox1.Visible=false;

}

shapeList.Add(shape);

finish=false;

shape=null;

StartPolygon=true;

Selectshape.Clear();

Points.Clear();

pictureBox1.Refresh();

}

}

///

///获取橡皮擦鼠标样式

///

privatevoidEraserCursor()

{

Bitmapbitmap=newBitmap(width*2,width*2);

Graphicsg=Graphics.FromImage(bitmap);

g.Clear(Color.White);

g.DrawRectangle(newPen(Color.Black),newSystem.Drawing.Rectangle(0,0,bitmap.Size.Width-1,bitmap.Size.Width-1));

g.Dispose();

this.defaultcursor=newCursor(Icon.FromHandle(bitmap.GetHicon()).Handle);

}

privatevoidsave(stringpath)

{

if(path==null)

path=@".\图片.sav";

if(serializer)

{

try

{

BinaryFormatterbinserializer=newBinaryFormatter();

using(FileStreamfs=newFileStream(path,FileMode.CreateNew))

{

binserializer.Serialize(fs,shapeList);

fs.Close();

MessageBox.Show("保存成功","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);

}

}

catch(Exceptionex)

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

当前位置:首页 > PPT模板 > 图表模板

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

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