C#课设报告Word文件下载.docx
- 文档编号:19132557
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:15
- 大小:129.73KB
C#课设报告Word文件下载.docx
《C#课设报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《C#课设报告Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。
Visualstudio2005环境
四、关键功能算法和函数流程图:
1)绘制点的相关算法:
[Serializable()]
publicclassPoint:
IGraphics///////////////////////点类
{
boolbedraw=false;
PointFPoiP=newPointF();
//用于记录点的位置
ColorpenColor;
//画笔颜色
floatpenWdith;
//画笔宽度
publicvoidMouseDown(objectsender,MouseEventArgse)
this.bedraw=true;
this.PoiP=e.Location;
//记录要绘制点的位置
}
publicvoidMouseMove(objectsender,MouseEventArgse)
publicvoidMouseUp(objectsender,MouseEventArgse)
this.bedraw=false;
publicvoiddpen(Colorcolor,floatwidth)//为画笔属性赋值
this.penColor=color;
this.penWdith=width;
publicvoidDraw(Graphicsg)//绘制点
Brushbrush=newSolidBrush(this.penColor);
g.FillEllipse(brush,this.PoiP.X-4,this.PoiP.Y-4,8,8);
//绘制点
publicboolJudge(MouseEventArgse)
returnfalse;
publicvoidCircum(booljudge)
MessageBox.Show("
不能计算周长!
"
"
警告"
MessageBoxButtons.OK);
publicvoidArea(booljudge)
不能计算面积!
}
2)绘制直线的算法:
[Serializable()]
publicclassLine:
IGraphics///////////////////////////直线类
//标记是否开始和停止绘制
PointFLinP1=newPointF();
PointFLinP2=newPointF();
//记录线段的起点和终点
publicvoidMouseDown(objectsender,MouseEventArgse)
this.LinP1=e.Location;
if(this.bedraw)
this.LinP2=e.Location;
publicvoidMouseUp(objectsender,MouseEventArgse)
publicvoidDraw(Graphicsg)
Penpen=newPen(this.penColor,this.penWdith);
g.DrawLine(pen,this.LinP1,this.LinP2);
//绘制直线
publicboolJudge(MouseEventArgse)//判断点是否在线段上或在其延长线上
if(Math.Abs((e.X-this.LinP1.X)/(this.LinP2.X-this.LinP1.X))==Math.Abs((e.Y-this.LinP1.Y)/(this.LinP2.Y-this.LinP1.Y)))
returntrue;
else
publicvoidCircum(booljudge)
floatSegCir=(float)Math.Sqrt((this.LinP1.X-this.LinP2.X)*(this.LinP1.X-this.LinP2.X)+(this.LinP1.Y-this.LinP2.Y)*(this.LinP1.Y-this.LinP2.Y));
线段长度为:
+SegCir,"
消息"
3)绘制矩形的算法:
publicclassRectangle:
IGraphics/////////////////////矩形类
PointFRecP1=newPointF();
PointFRecP2=newPointF();
//记录矩形的两个顶点
this.RecP1=e.Location;
this.RecP2=e.Location;
g.DrawRectangle(pen,this.RecP1.X,this.RecP1.Y,this.RecP2.X-this.RecP1.X,this.RecP2.Y-this.RecP1.Y);
//绘制矩形
publicboolJudge(MouseEventArgse)//判断点是否在矩形内
if(e.Location.X>
=this.RecP1.X&
&
e.Location.X<
=this.RecP2.X&
e.Location.Y>
=this.RecP1.Y&
e.Location.Y<
=this.RecP2.Y)//判断鼠标是否在矩形内
floatRecCir=2*(this.RecP2.X-this.RecP1.X)+2*(this.RecP2.Y-this.RecP1.Y);
矩形周长为:
+RecCir,"
floatRecArea=(this.RecP2.X-this.RecP1.X)*(this.RecP2.Y-this.RecP1.Y);
矩形面积为:
+RecArea,"
4)绘制多边形的算法:
[Serializable()]
publicclassPolygon:
IGraphics//////////////////多边形类
PointF[]Pol=newPointF[1];
//用于记录顶点的位置
this.Pol[this.Pol.Length-1]=e.Location;
publicvoidDraw(Graphicsg)
g.DrawPolygon(pen,this.Pol);
//绘制多边形
5)绘制圆的算法:
publicclassCircle:
IGraphics/////////////////////////圆类
PointFpoint1=newPointF();
PointFpoint2=newPointF();
//分别记录圆的圆心和圆上任意一点的坐标
this.point1=e.Location;
if(this.bedraw==true)
this.point2=e.Location;
floatr=(float)Math.Sqrt((point2.X-point1.X)*(point2.X-point1.X)+(point2.Y-point1.Y)*(point2.Y-point1.Y));
g.DrawEllipse(pen,(point1.X-r),(point1.Y-r),2*r,2*r);
//绘制圆
floatr=(float)Math.Sqrt((point2.X-point1.X)*(point2.X-point1.X)+(point2.Y-point1.Y)*(point2.Y-point1.Y));
if(Math.Sqrt((e.Location.X-point1.X)*(e.Location.X-point1.X)+(e.Location.Y-point1.Y)*(e.Location.Y-point1.Y))<
=r)//判断鼠标是否在圆内
publicvoidCircum(booljudge)//计算圆周长
floatCirC=(float)(2*Math.PI*r);
圆形周长为:
+CirC,"
publicvoidArea(booljudge)//计算圆面积
floatCirA=(float)Math.PI*r*r;
圆形面积为:
+CirA,"
6)绘制弧形的算法:
publicclassArc:
IGraphics//////////////////////弧形类
//记录矩形的左上角和右下角坐标
publicvoidDraw(Graphicsg)//绘制弧形
g.DrawRectangle(pen,point1.X,point1.Y,Math.Abs(point2.X-point1.X),Math.Abs(point2.Y-point1.Y));
publicboolJudge(MouseEventArgse)//计算前先判断鼠标是否在线段上
不能计算长度"
"
7)绘制椭圆的算法:
publicclassEllipse:
IGraphics/////////////////////椭圆类
publicvoidDraw(Graphicsg)//绘制椭圆
g.DrawEllipse(pen,point1.X,point1.Y,point2.X-point1.X,point2.Y-point1.Y);
floata=((point1.X-point2.X)/2)*((point1.X-point2.X)/2);
floatb=((point1.Y-point2.Y)/2)*((point1.Y-point2.Y)/2);
floatc=(point1.X+point2.X)/2;
floatd=(point1.Y+point2.Y)/2;
if((((e.X-c)*(e.X-c))/a+((e.Y-d)*(e.Y-d))/b)<
=1)
{
floatEllCir=(float)Math.PI*(Math.Abs(this.point1.X-this.point2.X)+Math.Abs(this.point1.Y-thi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 报告