当前位置:文档之家› 简单的绘图程序实验报告

简单的绘图程序实验报告

简单的绘图程序实验报告
简单的绘图程序实验报告

面向对象程序设计实训(基于MFC程序设计)

题目: 简单的绘图程序

院系专业:

姓名:

学号:

同组其他学生(学号):

简单绘图程序说明

1、功能分析

目前这个软件的主要功能有如下:

1、画直线:通过OnLine()函数实现。

2、画矩形:通过OnRectangle()函数实现。

3、画圆角矩形:通过OnRoundrect()函数实现。

4、画椭圆:通过OnEllipse()函数实现。

5、铅笔工具:可以画任意线条。通过直接在OnMouseMove(UINT nFlags, CPoint

point)函数里面添加代码实现。

6、右键弹出菜单:可以在客户中点击鼠标右键,快速选择常用菜单。通过

OnContextMenu函数实现。

7、状态栏显示鼠标移动的坐标:在程序的右下角显示,通过调用setWidnowText

和GetParent()实现。

8、画图颜色选择:可以画任何颜色的线条,通过OnColor()函数实现。

9、线条类型及线宽的设置:可以将画出的线条设置成实线、虚线、点线、点划

线,双点划线,还可以设置线条的粗细,,通过实例这一功能立刻显示所选择线条的粗细及线型。通过新建CLineSettingDlg类,其中OnSelchangeLineStyle()函数实现线型的改变,OnChangeEditLineWidth()函数实现线宽的改变。再在CDrawView类中调用OnLineSetting()函数实现画笔的对话框,

CLineSettingDlg类中的OnPaint()函数是实现示例功能的。

10、窗口的重绘时不擦除原来的内容:新建CShape类用来保存线条的颜色,线

宽,填充色等属性,在窗口大小发生变化时有OnDraw(CDC* pDC)函数进行重绘工作,重绘中调用了各个绘图函数的Draw(CDC *pDC)函数。

11、所绘图形的保存于读取,通过Serialize(CArchive &ar)函数进行序列化操作,

将所绘图形的信息通过文件的形式保存起来。

2、系统总体框架

图1 总体框架

3、模块设计与分析

3.1画图模块:该模块的大部份功能都写在了CDrawView类里面。该模块也是此次程序的重点模块之一,主要负责画一些简单图形,例如:直线、矩形、圆角矩形、椭圆、任意曲线(铅笔)等等;有线型、线宽的设置;还有画笔颜色和填充色的选择,可以画各种各样颜色的线条;还包含的右键菜单设置的函数。

3.2窗口模块:这部分大多数都是编译器自动生成,只做了一些修改,例如:使程序一开始运行便最大话,还是自定义程序的标题。

3.3菜单模块:该部分同样大部分都是编译器自动生成的,自己增添了一部分菜单例如:绘图工具、颜色设置、线条设置等等。还有右键弹出菜单,有颜色及线条设置等等,让使用者可以进行快速的操作。

3.4工具栏与状态栏模块:除了编译器自动生成的之外,还加入了画直线、矩形、圆角矩形、椭圆、铅笔等工具的快速选择,状态栏可以显示鼠标移动的坐标。

4、类的设计与分析

4.1、CAboutDlg类

由编译器生成,只做了一处的修改:

m_pMainWnd->SetWindowText(_T("简单绘图工具")); //设定主框架窗口标题

4.2、CDrawView类

由编译器自动生成的类

部分源代码:

void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)

{

// TODO: Add your message handler code here and/or call default if(m_flag==0)

{

SetCapture();

::SetCursor(m_hCross);

m_ptOrigin = point;

m_lMouseDown = true;

}

else

{

m_ptOrigin = point;

m_ptOld = point;//临时点

m_lMouseDown = true;//鼠标左键被按下

SetCapture(); // 将鼠标消息发送到视窗口

CRect rect;

GetClientRect(&rect); // 得到客户窗口的大小

ClientToScreen(&rect); // 将当前窗口坐标转换成屏幕坐标

ClipCursor(&rect); // 把鼠标限定在其参数指定的矩形区域内

SetCursor(m_hCross); // 获得十字光标

}

CScrollView::OnLButtonDown(nFlags, point);

}

/*响应鼠标移动消息,将起点与临时点之间的线擦除*/

void CDrawView::OnMouseMove(UINT nFlags, CPoint point)

{

// TODO: Add your message handler code here and/or call default CString str;

str.Format("x=%d,y=%d",point.x,point.y);

//得到框架类窗口的指针GetParent(),然后指针强制转换为框架类的类型(CMainFrame*)

//调用状态栏类的成员函数setWidnowText

((CMainFrame*)GetParent())->m_wndStatusBar.SetWindowText(str);

if( m_lMouseDown )

{//初始化

CClientDC dc(this);

CPen pen(m_vLineStyle,m_vLineWidth,m_color);

dc.SelectObject(&pen);

CBrush brush; //定义画刷

CPen * pOldPen = dc.SelectObject(&pen);//将画笔选入DC,并保存以前所用的画笔

brush.CreateSolidBrush(m_fColor); //创建画刷

dc.SelectObject(&brush); //获取画刷

if(m_flag==0)

{

CClientDC dc(this);

CPen pen(m_vLineStyle,m_vLineWidth,m_color);

dc.SelectObject(&pen);

CDrawDoc *pDoc = GetDocument();

ASSERT_VALID(pDoc);

CPoint ptOrg, ptStart, ptEnd;

ptOrg = GetScrollPosition(); // 获得当前工作区原点的坐标

ptStart = m_ptOrigin + ptOrg; // 加上原点的坐标来修正线段的坐标

ptEnd = point + ptOrg;

CCLine *pCLine = new CCLine(ptStart,ptEnd,m_vLineStyle, m_vLineWidth,m_color,m_fColor);

pDoc->m_obArray.Add(pCLine);

pDoc->SetModifiedFlag();

dc.MoveTo(m_ptOrigin);

dc.LineTo(point);

m_ptOrigin = point;

}

switch(m_flag)

{

case 1: //画直线

dc.SetROP2( R2_NOT ); //当前绘制的像素值设为屏幕像素值的反,这样可以覆盖掉上次的绘图,(自动擦除上次绘制的图形)

dc.SelectStockObject(NULL_BRUSH);//使图线不遮去原有背景

dc.MoveTo( m_ptOrigin ); //这两行代码擦除从起点到

dc.LineTo( m_ptOld ); //上次鼠标移动到的位置之间的临时线

dc.SelectObject(&pen);

dc.MoveTo( m_ptOrigin ); //这两行代码从起点到鼠标当前位置画线

dc.LineTo( point ); //

break;

case 2: //画矩形

dc.SetROP2( R2_NOT );

dc.SelectStockObject(NULL_BRUSH);

dc.Rectangle(CRect(m_ptOrigin,m_ptOld));

dc.SelectObject(&pen);

dc.Rectangle(CRect(m_ptOrigin,point));

break;

case 3: //画圆角矩形

dc.SetROP2( R2_NOT );

dc.SelectStockObject(NULL_BRUSH);

dc.RoundRect(CRect(m_ptOrigin,m_ptOld),CPoint(15, 15));

dc.RoundRect(CRect(m_ptOrigin,point),CPoint(15, 15));

break;

case 4: //画椭圆

dc.SetROP2( R2_NOT );

dc.SelectStockObject(NULL_BRUSH);

dc.Ellipse(CRect(m_ptOrigin,m_ptOld));

dc.Ellipse(CRect(m_ptOrigin,point));

break;

case 5: //画圆,将椭圆的长轴长度与短轴长度相同即可dc.SetROP2( R2_NOT );

dc.SelectStockObject(NULL_BRUSH);

dc.Ellipse(m_ptOrigin.x,m_ptOrigin.y,m_ptOld.x,m_ptOrigin.y+m_ptO ld.x-m_ptOrigin.x);

dc.Ellipse(m_ptOrigin.x,m_ptOrigin.y,point.x,m_ptOrigin.y+point.x -m_ptOrigin.x);

break;

}//switch 结束

dc.SelectObject(pOldPen);//恢复先前的画笔

m_ptOld = point;

}//if 结束

CScrollView::OnMouseMove(nFlags, point);

}

void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)

{

// TODO: Add your message handler code here and/or call default if(m_flag==0)

{

if( m_lMouseDown )

{

m_lMouseDown = false;

ReleaseCapture();

ClipCursor( NULL );

}

}

else

{

if( m_lMouseDown )

{

m_lMouseDown = false;

CClientDC dc(this);

CPen pen(m_vLineStyle,m_vLineWidth,m_color);

dc.SelectObject(&pen);

CBrush brush; //定义画刷

brush.CreateSolidBrush(m_fColor); //创建画刷

dc.SelectObject(&brush); //获取画刷

CPen * pOldPen = dc.SelectObject(&pen);

ReleaseCapture();

ClipCursor( NULL );

switch(m_flag)

{

case 1: //画直线

dc.SetROP2( R2_COPYPEN );//使用当前的画笔的颜色

dc.MoveTo( m_ptOrigin ); //这两行代码从起点到鼠标当前位置画线

dc.LineTo( point ); //

break;

case 2: //画矩形

dc.Rectangle(CRect(m_ptOrigin,point));

break;

case 3: //画圆角矩形

dc.RoundRect(CRect(m_ptOrigin,point),CPoint(10,15));

break;

case 4: //画椭圆

dc.SetROP2( R2_COPYPEN );

dc.Ellipse(CRect(m_ptOrigin,point));

break;

case 5: //画圆

dc.SetROP2( R2_COPYPEN );

dc.Ellipse(m_ptOrigin.x,m_ptOrigin.y,point.x,m_ptOrigin.y+point.x -m_ptOrigin.x);

break;

}//switch 结束

//实现文件保存,将各图形类的地址保存在CObArray m_obArray数组中

CDrawDoc* pDoc = GetDocument(); //得到文档类指针

CShape *pShape ;

CPoint ptOrg;

ptOrg = GetScrollPosition(); // 获得当前工作区原点的坐标

m_ptOrigin = m_ptOrigin + ptOrg; // 加上原点的坐

标来修正线段的坐标

point = point + ptOrg;

switch(m_flag)

{

case 1:

pShape = new CLine(m_ptOrigin,point,m_vLineStyle, m_vLineWidth,m_color,m_fColor);

break;

case 2:

pShape = new CRectangle(m_ptOrigin,point,m_vLineStyle, m_vLineWidth,m_color,m_fColor);

break;

case 3:

pShape = new CRoundRect(m_ptOrigin,point,m_vLineStyle, m_vLineWidth,m_color,m_fColor);

break;

case 4:

pShape = new CEllipse(m_ptOrigin,point,m_vLineStyle, m_vLineWidth,m_color,m_fColor);

break;

case 5:

pShape = new CCircle(m_ptOrigin,point,m_vLineStyle, m_vLineWidth,m_color,m_fColor);

break;

}

pDoc->m_obArray.Add(pShape);

pDoc->SetModifiedFlag();

}//if 结束

m_lMouseDown = false;

}

CScrollView::OnLButtonUp(nFlags, point);

}

4.3、CMainFrame类

主要由编译器生成,做了小部分修改:

//工具条的风格

if (!s_ShapeToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_LEFT

| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||

!s_ShapeToolBar.LoadToolBar(IDR_SHAPETOOLBAR))

{

TRACE0("Failed to create toolbar\n");

return -1; // fail to create

}

int nCount =s_ShapeToolBar.GetToolBarCtrl().GetButtonCount();//设置工具条按钮能被按下并且弹起

for(int i=0;i

{

s_ShapeToolBar.SetButtonStyle(i,TBBS_CHECKGROUP);

}

s_ShapeToolBar.EnableDocking(CBRS_ALIGN_ANY);//以下两行使形状工具条和标准工具条具有停靠能力,并且可以停靠在任何地方

m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);

EnableDocking(CBRS_ALIGN_ANY);

DockControlBar(&m_wndToolBar);

DockControlBar(&s_ShapeToolBar,AFX_IDW_DOCKBAR_LEFT,NULL);//使形状工具条停靠在客户区左边。

用于改变工具条停靠的地方。

4.4、CLineSettingDlg类

由自己创建,主要是响应菜单中的各个设置选项,该类实现的功能比较少。

void CLineSettingDlg::OnPaint()

{

CPaintDC dc(this); // device context for painting

// TODO: Add your message handler code here

UpdateData();

CPen pen(m_LineStyle, m_LineWidth, m_color);//创建画笔

dc.SelectObject(&pen);

CRect rect;

GetDlgItem(IDC_SAMPLE)->GetWindowRect(rect);

ScreenToClient(rect);

dc.MoveTo(rect.left+20,(rect.top+rect.bottom)/2);

dc.LineTo(rect.right-20,(rect.top+rect.bottom)/2);

// Do not call CDialog::OnPaint() for painting messages

}

void CLineSettingDlg::OnSelchangeLineStyle()

{

// TODO: Add your control notification handler code here

int index = ((CComboBox*)GetDlgItem(IDC_LINESTYLE))->GetCurSel(); m_LineStyle = index;

Invalidate();

}

void CLineSettingDlg::OnChangeEditLineWidth()

{

// TODO: If this is a RICHEDIT control, the control will not

// send this notification unless you override the CDialog::OnInitDialog()

// function and call CRichEditCtrl().SetEventMask()

// with the ENM_CHANGE flag ORed into the mask.

// TODO: Add your control notification handler code here

Invalidate();

}

4.5、Chape类

由自己创建,主要用于保存线条的颜色,线宽,填充色等属性,在窗口重绘时

部分源代码:

CShape::CShape(CPoint p1, CPoint p2, UINT ps, int pw, COLORREF cl,COLORREF c2)

{

this->m_ptOrigin = p1;

this->m_ptEnd = p2;

this->m_LineStyle = ps;

this->m_LineWidth = pw;

this->m_color = cl;

this->m_fColor = c2;

}

4.6、CLine,CCLine,CCircle,CEllipse,CRectangle,CRoundRect类

由自己创建,由自己创建,它们都是由Chape类派生出来,用于绘制各种不同类型的图形,颜色,线条等属性均取自于Chape类。

部分源代码:

void CLine::Draw(CDC *pDC)

{

CPen pen(m_LineStyle, m_LineWidth, m_color);

pDC->SelectObject(&pen);

CBrush brush(m_fColor);

pDC->SelectObject(&brush);

pDC->MoveTo(m_ptOrigin.x,m_ptOrigin.y);

pDC->LineTo(m_ptEnd.x,m_ptEnd.y);

}

void CEllipse::Draw(CDC *pDC)

{

CPen pen(m_LineStyle, m_LineWidth, m_color);

pDC->SelectObject(&pen);

CBrush brush(m_fColor);

pDC->SelectObject(&brush);

pDC->Ellipse(CRect(m_ptOrigin,m_ptEnd));

}

void CCircle::Draw(CDC *pDC)

{

CPen pen(m_LineStyle, m_LineWidth, m_color);

pDC->SelectObject(&pen);

CBrush brush(m_fColor);

pDC->SelectObject(&brush);

pDC->Ellipse(m_ptOrigin.x,m_ptOrigin.y,m_ptEnd.x,m_ptOrigin.y+m_ptEnd.x-m_p tOrigin.x);

}

流程图:

画画画画铅直矩圆椭笔线形角圆

6、功能测试

图6-1 铅笔工具测试图

图6-2 画直线测试图

图6-3 画矩形测试图

图6-4 画椭圆测试图

图6-5 颜色及填充色设置测试图

8、关键源代码

1)在“MainFrm.h”中,在class CMainFrame : public CFrameWnd里的protected 下定义:

CToolBar m_wndToolBar; //工具栏在 public 下定义:CStatusBar m_wndStatusBar;

//此函数可实现在状态栏显示光标所在位置的坐标

CString str;

str.Format("x=%d,y=%d",point.x,point.y);

//得到框架类窗口的指针GetParent(),然后指针强制转换为框架类的类型(CMainFrame*)

//调用状态栏类的成员函数setWidnowText

((CMainFrame*)GetParent())->m_wndStatusBar.SetWindowText(str);

9、使用手册

由于本程序使用比较简单,现在只作一些的使用介绍.

下面是程序打开的初始界面:

图6-6 程序主体图

菜单与工具栏,工具栏可以快捷选择要使用的画笔

图6-7 菜单栏及工具栏

此功能与工具栏的一样,只是工具栏那里会比较方便选择

图6-8 绘图工具栏

线条类型对话框,颜色设置请参考图6-8 颜色设置测试图

图6-12 线宽、线型设置

图6-13 右键弹出菜单

mfc绘图程序上机步骤

首先生成MFC程序空框架 空框架中的每个类的职责是什么要自己理解清楚 第一次课: 1.定义自己的数据类CLine直线类,用于绘图 点击菜单:插入—类 选择Generic class,输入类名,每个类都是分成两个文件.h 中只有类体,包含类的数据成员定义和成员函数声明,.cpp中就是成员函数的类体外实现 classCLine { int x1,y1,x2,y2; public: CLine(int a=0,int b=0,int c=0,int d=0); virtual ~CLine(); int Getx1(); int Gety1(); int Getx2(); int Gety2(); void SetPoint1(intx,int y);很多函数是在后面使用中发现问题逐渐添加的 void SetPoint2(intx,int y); }; 2.自定义的类要作为数据成员出现在Doc类中 classCSmallCADDoc : public CDocument { protected: // create from serialization only CSmallCADDoc(); DECLARE_DYNCREATE(CSmallCADDoc) // Attributes public: CLine line1; //数据成员应该是私有,但是由于文档类与视图类交换频繁,为了访问方便,直接定义成公有了。你也可以定义成私有,再定义一个Get函数间接访问,取他的值3.注意:添加了这个数据成员后,需要增加几个#include “Line.h”语句 添加的原则是,每个cpp文件都单独编译,哪里用到新的类,相应的cpp前就要增加#include “。。。”语句 此处是在CSmallCADDoc类中添加了一个CLine line1;类对象,在SmallCADDoc.h文件中。所以,凡是包含了#include “SmallCADDoc.h”的地方都要在前面添加#include “Line.h” 语句。共3处:app doc view 这3个类的cpp文件前 4.注意:初始化 CLine line1; //数据成员是文档类的,它不像dos下程序,明确能看到定义,调用构造

mfc简单绘图程序

M F C 简 单 的 绘 图 程 序 ——王帅

目录 摘要 (2) 关键字 (2) 1 引言 (2) 设计目的 ............................................................................................................ 错误!未定义书签。 2 功能说明 (2) 2.1菜单栏....................................................................................................... 错误!未定义书签。 2.1.1图形 (3) 2.1.2画笔 (4) 2.1.3画硬币 (4) 2.2工具栏 (5) 2.3状态栏 (5) 3 功能的实现 (5) 3.1 视图设计 (5) 3.2 编辑资源 (6) 3.3 编程思路及各个函数的实现 (7) (1)思路 (7) (2)代码的实现 (7)

1.为基本形状创建一个基类 (8) 2.基本形状类的创建 (8) 2.1矩形类的创建及定义 (8) 2.2圆形类的创建及定义 (10) 2.3正五边形类的创建及定义 (11) 2.4正三角形类的创建及定义 (14) 2.5椭圆类的创建及定义 (16) 2.6正四边形类的创建及的定义 (17) 2.7正六边形类的创建及定义 (18) 2.8直线类的创建及定义 (19) 3.各基本形状类在CMyDraw2_0类中的调用和绘图的实现 (20) 3.1矩形类的调用与与绘图的实现 (20) 3.2圆形类的调用 (24) 3.3正三角形类的调用 (25) 3.4基本类型调用的剩余代码 (26) 4.画笔的使用、颜色及大小的调整 (29) 5.画硬币 (35) 6.工具栏中的自定义控件 (38) 7.状态栏中的显示 (39) 4程序功能的测试 (41) 5最后总结 (42)

简单的绘图程序实验报告

面向对象程序设计实训(基于MFC程序设计) 题目: 简单的绘图程序 院系专业: 姓名: 学号: 同组其他学生(学号):

简单绘图程序说明 1、功能分析 目前这个软件的主要功能有如下: 1、画直线:通过OnLine()函数实现。 2、画矩形:通过OnRectangle()函数实现。 3、画圆角矩形:通过OnRoundrect()函数实现。 4、画椭圆:通过OnEllipse()函数实现。 5、铅笔工具:可以画任意线条。通过直接在OnMouseMove(UINT nFlags, CPoint point)函数里面添加代码实现。 6、右键弹出菜单:可以在客户中点击鼠标右键,快速选择常用菜单。通过 OnContextMenu函数实现。 7、状态栏显示鼠标移动的坐标:在程序的右下角显示,通过调用setWidnowText 和GetParent()实现。 8、画图颜色选择:可以画任何颜色的线条,通过OnColor()函数实现。 9、线条类型及线宽的设置:可以将画出的线条设置成实线、虚线、点线、点划 线,双点划线,还可以设置线条的粗细,,通过实例这一功能立刻显示所选择线条的粗细及线型。通过新建CLineSettingDlg类,其中OnSelchangeLineStyle()函数实现线型的改变,OnChangeEditLineWidth()函数实现线宽的改变。再在CDrawView类中调用OnLineSetting()函数实现画笔的对话框, CLineSettingDlg类中的OnPaint()函数是实现示例功能的。 10、窗口的重绘时不擦除原来的内容:新建CShape类用来保存线条的颜色,线 宽,填充色等属性,在窗口大小发生变化时有OnDraw(CDC* pDC)函数进行重绘工作,重绘中调用了各个绘图函数的Draw(CDC *pDC)函数。 11、所绘图形的保存于读取,通过Serialize(CArchive &ar)函数进行序列化操作, 将所绘图形的信息通过文件的形式保存起来。

C++实验报告(MFC简单画图程序)

VC++程序设计实验报告 一、实验目的 掌握MFC编程 二、实验内容 用MFC向导创建单文档应用程序,一个简单的画图程序。 ?使用C++语言实现 ?使用VC++6.0集成开发环境开发 ?使用MFC应用程序开发框架 三、实验步骤 ?基本功能描述 1. 打开exe文件,在绘图下拉菜单中可分别设置绘制的图形形状,如直线、 曲线、矩形及椭圆,线宽选项,有1-6可供选择,线型选项有实线、虚线、点线和点段线供设置,还可以设置线色以及填充色,通过弹出的颜色对话框选择需要的颜色,如果不选择线宽、线色以及填充色,则按默认的画笔,画刷来绘制选择的图形。 2. 选择好图形后,通过鼠标可以绘制出相应的直线,矩形或椭圆,鼠标的按下确定图形的起点,鼠标的拖动则确定了图形的终点,即通过鼠标的拖动来决 定图形的大小,当鼠标弹起,此图形则绘制完毕。 ?设计思路 1. 对需要用到的变量进行初始化。 2. 选择相应的图形之后就响应相应的消息处理函数,给shape赋对应的值。选择不同的线宽,线色与填充色,即可改变画笔或画刷的属性。 3. 鼠标的按下响应函数OnLButtonDown(),捕捉鼠标当前位置得到起点的坐标,鼠标的拖动响函数OnMouseMove()改变终点的坐标,鼠标的弹起响应OnLButtonUp(),确定终点坐标,刷新,得到绘制图形。 4. 选择图形或其它属性,可进行下一次绘制。 ?软件设计 A 设计步骤 1.创建单文档 创建一个MFC AppWizard[exe]工程,命名为“Draw”,如图1所示,并创建单文档,如图2所示。创建成功后,系统自动生成相应的类,如图3所示。

图1 创建工程 图2 创建单文档

路由器实验报告1

路由器技术实验报告

《路由器技术》实验指导书 一.实验总学时(课外学时/课学时):22 开实验个数: 7 二.适用专业:计算机专业 三.考核方式及办法:在规定实验时间完成实验要求,依据实验过程、实验结果和实验报告综合考核。四.配套的实验教材或指导书:自编实验指导书 五. 实验项目: 实验一:Packet Tracer软件使用交换机的配置与管理 (容一):认识 Packet Tracer软件 Packet Tracher介绍 Packet Tracer 是 Cisco 公司针对CCNA认证开发的一个用来设计、配置和故障排除网络的模拟软件。Packer Tracer 模拟器软件比 Boson 功能强大,比 Dynamips 操作简单,非常适合网络设备初学者使用。学习任务: 1、安装 Packer Tracer; 2、利用一台型号为 2960 的交换机将 2pc机互连组建一个小型局域网; 3、分别设置pc机的ip 地址; 4、验证 pc 机间可以互通。 实验设备: Switch_2960 1 台;PC 2 台;直连线 配置信息: PC1 IP: 192.168.1.2 Submask: 255.255.255.0 Gateway: 192.168.1.1 PC2 IP: 192.168.1.3 Submask: 255.255.255.0 Gateway: 192.168.1.1

(容二):交换机的基本配置与管理 1.实验目标: 掌握交换机基本信息的配置管理。 2.实验背景: 某公司新进一批交换机,在投入网络以后要进行初始配置与管理,你作为网络管理员,对交换机进行基本的配置与管理。 3.技术原理: 交换机的管理方式基本分为两种:带管理和带外管理。 1.通过交换机的 Console 端口管理交换机属于带外管理;这种管理方式不占用交换机的网络端口,第一次配置交换机必须利用 Console端口进行配置。 2.通过Telnet、拨号等方式属于带管理。 交换机的命令行操作模式主要包括: ●用户模式 Switch> ●特权模式 Switch# ●全局配置模式 Switch(config)# ●端口模式 Switch(config-if)# 4.实验步骤: ●新建Packet Tracer 拓扑图 ●了解交换机命令行 ●进入特权模式(en) ●进入全局配置模式(conf t) ●进入交换机端口视图模式(int f0/1) ●返回到上级模式(exit) ●从全局以下模式返回到特权模式(end) ●帮助信息(如? 、co?、copy?) ● ●命令简写(如 conf t) ●命令自动补全(Tab) ●快捷键(ctrl+c 中断测试,ctrl+z 退回到特权视图)

mfc简单绘图程序报告

简单绘图程序 1 需求说明 1.1 问题描述 设计一个简单的绘图应用程序,可以绘制图形或自由绘制线段,可以更改颜色、画笔粗细、保存文件。 1.2功能说明 1.图形绘制功能:直线、椭圆、矩形。 在菜单栏中选择需要的图形(也可以通过工具栏中选择)用鼠标便能在视图中绘出相应的图形。 2.可以绘制自由线段 3.对图形的操作:能通过菜单栏弹出对话框选择线宽、自定义颜色,也可以擦除绘制的线段。 4.可以保存绘图文件,保存后打开可以继续绘制。 2.1.3 数据说明 在程序运行以后,当用户单击某个菜单项时,应该把用户的选择保存起来,以便随后的绘图操作使用。在CDzyView类中添加一个私有变量xz;用来保存用户的选择(直线、矩形、椭圆、自由绘图)在绘制时都可有两点来确定其图形。当鼠标左击时得到一个点,当鼠标停止移动时得到另外一个点。为视图类CDzyView分别捕获鼠标左键按下和弹起这两个消息。当鼠标左键按下时,需要将鼠标当前按下点保存至sx、sy,在鼠标移动停止后,将当前坐标保存至ex,ey.

其他主要数据说明: int fd 判断是否为自由绘图模式int w 线宽 int R RGB中的R int G RGB中的G int B RGB中的B CGraph类中 int m_nType:保存后重绘时用户的选择int qdx; 重绘起点x int qdy; 重绘起点y int zdx; 重绘终点x int zdy; 重绘终点y CLine类中 int cx; 重绘线宽 int sx; 重绘起点x int sy; 重绘起点y int zx; 重绘终点x int zy; 重绘终点y int w; 重绘线宽 自定义颜色对话框关联变量: IDC_EDIT_RED int m_Red IDC_EDIT_GREEN int m_Green IDC_EDIT_BLUE int m_Blue IDC_SCROLL_RED CScrollBar m_Sred IDC_SLIDER_GREEN CSliderCtrl m_Sgreen IDC_SPIN_BLUE CSpinButtonCtrl m_Sblue 2 分析、设计与实现 2.1 主要功能设计与实现

路由器实验报告1

路由器技术实验报告 ------------安徽工业大学计算机与科学技术学院

《路由器技术》实验指导书 一.实验总学时(课外学时/课内学时):22 开实验个数: 7 二.适用专业:计算机专业 三.考核方式及办法:在规定实验时间内完成实验要求,依据实验过程、实验结果和实验报告综合考核。四.配套的实验教材或指导书:自编实验指导书 五. 实验项目: 实验一:Packet Tracer软件使用交换机的配置与管理 (内容一):认识 Packet Tracer软件 Packet Tracher介绍 Packet Tracer 是 Cisco 公司针对CCNA认证开发的一个用来设计、配置和故障排除网络的模拟软件。Packer Tracer 模拟器软件比 Boson 功能强大,比 Dynamips 操作简单,非常适合网络设备初学者使用。学习任务: 1、安装 Packer Tracer; 2、利用一台型号为 2960 的交换机将 2pc机互连组建一个小型局域网; 3、分别设置pc机的ip 地址; 4、验证 pc 机间可以互通。 实验设备: Switch_2960 1 台;PC 2 台;直连线 配置信息: PC1 IP: Submask: Gateway: PC2 IP: Submask::

(内容二):交换机的基本配置与管理 1.实验目标: 掌握交换机基本信息的配置管理。 2.实验背景: 某公司新进一批交换机,在投入网络以后要进行初始配置与管理,你作为网络管理员,对交换机进行基本的配置与管理。 3.技术原理: 交换机的管理方式基本分为两种:带内管理和带外管理。 1.通过交换机的 Console 端口管理交换机属于带外管理;这种管理方式不占用交换机的网络端口,第一次配置交换机必须利用 Console端口进行配置。 2.通过Telnet、拨号等方式属于带内管理。 交换机的命令行操作模式主要包括: 用户模式 Switch> 特权模式 Switch# 全局配置模式 Switch(config)# 端口模式 Switch(config-if)# 4.实验步骤: 新建Packet Tracer 拓扑图 了解交换机命令行 进入特权模式(en) 进入全局配置模式(conf t) 进入交换机端口视图模式(int f0/1) 返回到上级模式(exit) 从全局以下模式返回到特权模式(end) 帮助信息(如、co、copy)

MFC实现简单画图形程序(学习相关)

《MFC编程及应用》课程设计报告题目:简单画图形程序 学号:姓名: 指导老师: 时间: 评语:

程序设计步骤: 一、建立基于对话框的应用程序框架; 二、CMy0910200155Dlg类中关键新增变量的作用: CPtrArray pta; //用于保存已绘图形的相关信息。 CMemoryNode *pmN; //指向CMemoryNode类的指针,程序运行过 程中动态保存对象信息。 CMemoryNode *pmn; //指向CMemoryNode类的指针,从文件中读 取信息时动态创建类的对象。 COLORREF m_CurrentBrushColor; //用于存放当前画刷的颜色。 COLORREF m_CurrentPenColor; //用于存放当前画笔的颜色。 int num; //用于存放从"Index.txt"文件中读取的数字。 int flag=0; //用于标识:当为1时,表示按下了”画图”按钮;当为2时, 表示按下了”撤消”按钮;当为3时,表示按下了”加载历史” 按钮,则从文件中读取信息。 int mark; //用于标识:当为0时,表示刚画过矩形;当为1时,表示 刚画过圆角矩形;当为2时,表示刚画过椭圆。 int index; //用于存放pta数组的容量。 int flag1=0; //用于标识,和flag搭配,用来处理多种情况下的窗口重绘 问题。 int ButtonState=0; //用于标识,是类CShow和类CMy0910200155Dlg 的一个接口,通过其值在1和0之间转换,来处理弹出式对 话框的初次绘制和移动时的重绘问题。

c面向对象程序设计MFC简单计算器实验报告

计算机与信息工程学院 《程序设计基础》课程设计报告 题目名称:60.编写一个能实现简单功能的计算器学生姓名:刘沛东 学生学号:2011508154 专业班级:电子信息工程(1)班 指导教师:高攀

1 课程设计的题目 编写一个能实现简单功能的计算器 2 题目要求 1. 有一个计算器图形。 2. 能实现加、减、乘、除及乘方的运算。 3. 当输入题目时,屏幕上要在指定位置上显示出相应的题目内容,且相应的数字键要改变颜色 例如:输入数字1 时,在计算器图形上的1键变为红色。 4. 屏幕、图形颜色、形状自定 3 总体设计 3.1 总体框架 图1 系统框架

3.2 系统功能说明 在VC++6.0中绘制计算器界面,各控件的设置 对0~9控件设定相应的ID和其他属性: 图2 “1”控件设置 对“+、-、*、\”控件设定相应的ID和其他属性: 图2 “+”控件设置 对其它控件设定相应的ID和其他属性: 图3 其它控件设置

主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。拖出的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。 4 程序详细设计 4.1系统主调模块 图5 程序流程图

4.2各模块详细设计 4.2.1 建立的变量,控件的命名,对应的消息处理函数对应表 double poz; //保存小数点的位置,初始化为1,表示poz-1个小数点。 double m_Dis; //Edit控件上需要显示的数字 BOOL point_flag; //小数点表示位,判定是否是小数,是小数为1,不是小数为0。 double numfirst; //保存计算过程中的前一个数字, double numsecond;//保存计算过程中的第二个数字 char op;//记录当前的计算符号,可以为’+’,’-’,’*’,’/’,’=’,’c’,’n’ 变量初始化: poz=1; m_Dis = 0.0; numfirst=0; numsecond=0; op=0;

路由器实验报告

路由器实验报告

————————————————————————————————作者: ————————————————————————————————日期: ?

路由器技术实验报告 ------------安徽工业大学计算机与科学技术学院

《路由器技术》实验指导书 一.实验总学时(课外学时/课内学时):22 开实验个数:7 二.适用专业:计算机专业 三.考核方式及办法:在规定实验时间内完成实验要求,依据实验过程、实验结果和实验报告综合考核。 四.配套的实验教材或指导书:自编实验指导书 五. 实验项目: 实验一:PacketTracer软件使用交换机的配置与管理 (内容一):认识PacketTracer软件 Packet Tracher介绍 Packet Tracer是Cisco公司针对CCNA认证开发的一个用来设计、配置和故障排除网络的模拟软件。 Packer Tracer 模拟器软件比Boson 功能强大,比Dynamips 操作简单,非常适合网络设备初学者使用。 学习任务: 1、安装Packer Tracer; 2、利用一台型号为2960 的交换机将2pc机互连组建一个小型局域网; 3、分别设置pc机的ip 地址; 4、验证pc 机间可以互通。 实验设备: Switch_2960 1台;PC2 台;直连线 配置信息: PC1 IP:192.168.1.2 Submask:255.255.255.0 Gateway:192.168.1.1 PC2 IP:192.168.1.3 Submask:255.255.255.0 Gateway: 192.168.1.1

路由器基本配置_实验报告

路由器基本配置_实验报告 《组网技术》实验报告 姓名学号教学班计算机网络 任课教师王丽娟指导教师王丽娟班主任 2013-6-3 实验地点广西某家具公司机房实验时间 实验项目名称:路由器基本配置 实验目标及要求: 通过CISCO路由器,了解路由器的各个接口的用途、配接方法,路由器配置命令、状态模式的功能,在此基础上通过超级终端完成对路由器的各种基本配置,如:路由器的命名、特权密码的设置、LAN接口的配置、WAN接口的配置、静态路由的配置等等。并用命令保存和查验配置信息。 实验环境及工具: CISCO路由器,PC机,网线,专用电缆(RS232,V35),CONSOLE。 实验内容及过程: 实验内容: 观察CISCO路由器,了解路由器基本知识; 学习电缆连接; 查看CISCO路由器的操作,了解路由器工作原理; 学习基本的路由器配置。 实验步骤: 配置相应的IP参数 打开计算机的“超级终端”程序 此超级终端内输入的命令都是对路由器A的操作,超级终端窗口内所有输出都是路由器A的 输出。 键入“,”列入命令提示。 7-A>? Exec commands: <1-99> Session number to resume access-enable Create a temporary Access-List entry access-profile Apply user-profile to interface clear Reset functions connect Open a terminal connection disable Turn off privileged commands disconnect Disconnect an existing network connection

MFC经典绘图方法总结

MFC经典绘图方法总结 Windows 绘图的实质就是利用windows提供的图形设备接口GDI(Graphics Device Interface)将图形会制在显示器上。 为了支持GDI绘图,MFC提供了两种重要的类: 设备上下文DC(Device Context)类,用于设置绘图属性和绘制图形; 绘图对象类,封装了各种GDI绘图对象,包括画笔、刷子、字体、位图、调色板和区域。 CDC类介绍: 在MFC中,CDC是设备上下文类的基类,派生类包括:CClientDC, CPaintDC, CWindowDC, CMetaFileDC类 CClientDC 客户区设备上下文,绘制客户区时 CPaintDC 一般发生在窗口需要重绘时 CWindwDC 可以绘制整个窗口,通常在窗口WM_NCPAINT消息的响应函数CWnd::OnNCPaint()中使用 CMetaFileDC 专门用于图元文件的绘制,图元文件记录一组GDI命令,重建图形输出。 CDC包含m_hDC和m_hAttribDC二个设备上下文。CDC指导所有对m_hDC的输出GDI调用(SetTextColor)以及对m_hAttribDC的大部分属性GDI调用(GetTextColor)。 CDC对象的重要函数如下: 1、为指定设备创建上下文virtual BOOL CreateDC(...) 比如创建一个为屏幕的设备上下文 CDC dc; dc.CreateDC("DISPLAY", NULL, NULL,NULL); 2、创建内存设备上下文,与指定设备上下文兼容virtual BOOL CreateCompatibleDC( CDC * pDC) 3、删除CDC对象对应的Windows设备上下文, 通常不调用该函数而是使用析构程序virtual BOOL DeleteDC(); 4、将HDC句柄转化为设备上下文的句柄: CDC *pDC=CDC::FromHandle( hDC ) 5、选择GDI对象入选到设备上下文中,一共有五种形式: CPen * SelectObject( CPen * pPen) ; CBrush * SelectObject( CBrush * pBrush) ; virtual CFont * SelectObject( CFont * pFont) ; CBitmap * SelectObject( CBitmap * pBitmap) ; int SelectObject( CRgn * pRgn) ;

简易画图板设计报告

设计报告:Graphic简易画 图板 -----韩伟谢程焜肖越周峰 电科二班

1设计目的 设计一个单文档类型的MFC AppWizard (exe)工程,工程取名为:Graphic。此程序将实现简单的绘图功能,包括点、直线、矩形、椭圆、扇形和连续线的绘制。并且能实现绘图的控制,包括线宽、线型和颜色的设置,图形的保存和打开以及笔刷的使用。 2 总体设计 设计图如图6

图6 3详细设计 首先,新建一个单文档类型的MFC AppWizard (exe)工程,工程取名为:Graphic。为此程序添加一个子菜单,菜单名称为“绘图”,并为其添加六个菜单项,分别用来控制不同图形的绘制。当用户选择其中的一个菜单项后,程序将按照当前的选择进行相应图形的绘制。添加的六个菜单项的ID及名称如表1所示。然后分别为这六个菜单项添加命令响应,本程序让视类(CGraphicView)对这些菜单命令进行响应,这六个响应函数的名称分别如表1所示。

在程序运行以后,当用户单击某个菜单项时,应该把用户的选择保存起来,以便随后的绘图操作使用。因此在CGraphicView类中添加一个私有变量m_nDrawType;用来保存用户的选择,该变量的定义如下所述: private: UINT m_nDrawType; 接着,在视类的构造函数中将此变量初始化为0,程序代码如下: CGraphicView::CGraphicView() { // TODO: add construction code here m_nDrawType=0; } 利用switch/case语句,来分别完成相应图形的绘制。当用户选择【绘图】菜单下的不同子菜单项时,将变量m_nDrawType设置为不同的值。程序代码如下:void CGraphicView::OnDot() { // TODO: Add your command handler code here m_nDrawType=1; } void CGraphicView::OnLine() { // TODO: Add your command handler code here m_nDrawType=2; } void CGraphicView::OnRectangle() { // TODO: Add your command handler code here m_nDrawType=3; } void CGraphicView::OnEllipse() { // TODO: Add your command handler code here m_nDrawType=4;

路由器及其配置实验报告

《路由器及其配置》实验结果文件 附:实验配置命令清单及显示结果 1.交换机(路由器)A 夏战辉: ra(config)#hostname RA RA(config)#int s1/2 RA(config-if)#ip add 172.16.10.1 255.255.255.0 RA(config-if)#clock rate 64000 RA(config-if)#clock rate setting is only valid for DCE ports. no shutdown RA(config-if)#no shutdown RA(config-if)#exit RA(config)#int f1/0 RA(config-if)#ip add 192.168.10.1 255.255.255.0 RA(config-if)#end RA# Configured from console by console RA#show int s 1/2 serial 1/2 is UP , line protocol is UP Hardware is PQ2 SCC HDLC CONTROLLER serial Interface address is: 172.16.10.1/24 MTU 1500 bytes, BW 2000 Kbit Encapsulation protocol is HDLC, loopback not set Keepalive interval is 10 sec , set Carrier delay is 2 sec

RXload is 1 ,Txload is 1 Queueing strategy: WFQ 5 minutes input rate 17 bits/sec, 0 packets/sec 5 minutes output rate 17 bits/sec, 0 packets/sec 450 packets input, 9900 bytes, 0 no buffer Received 450 broadcasts, 0 runts, 0 giants 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 abort 450 packets output, 9900 bytes, 0 underruns 0 output errors, 0 collisions, 4 interface resets 1 carrier transitions V35 DTE cable DCD=up DSR=up DTR=up RTS=up CTS=up RA#show runn Building configuration... Current configuration : 619 bytes ! version 8.4 (building 15) hostname RA ! ! ! ! ! ! ! ! ! no service password-encryption ! ! ! ! ! ! interface serial 1/2 ip address 172.16.10.1 255.255.255.0 ! --More- Show running-config

基于MFC的OpenGL绘图

基于MFC的OpenGL绘图 本文更新版本请点击 [置顶]《基于MFC的OpenGL编程》系列文章 一、简介 GDI是通过设备句柄(Device Context以下简称"DC")来绘图,而OpenGL则需要绘制环境(Rendering Context,以下简称"RC")。每一个GDI命令需要传给它一个DC,但与GDI不同,OpenGL使用当前绘制环境(RC)。一旦在一个线程中指定了一个当前RC,在此线程中其后所有的OpenGL命令都使用相同的当前RC。虽然在单一窗口中可以使用多个RC,但在单一线程中只有一个当前RC。下面我将首先产生一个OpenGL RC并使之成为当前RC,这将分为三个步骤:设置窗口像素格式;产生RC;设置为当前RC。 二、MFC中的OpenGL基本框架 1、首先创建工程 用AppWizard产生一个MFC EXE项目,其他默认即可。 2、将此工程所需的OpenGL文件和库加入到工程中 在工程菜单中,选择"Build"下的"Settings"项。单击"Link"标签,选择"General"目录,在Object/Library Modules的编辑框中输入"opengl32.lib glu32.lib glut.lib glaux.lib"(注意,输入双引号中的内容,各个库用空格分开;否则会出现链接错误),选择"OK"结束。然后打开文件"stdafx.h",加入下列头文件: #include #include 3、改写OnPreCreate函数并给视图类添加成员函数和成员变量

OpenGL需要窗口加上WS_CLIPCHILDREN(创建父窗口使用的Windows风格,用于重绘时裁剪子窗口所覆盖的区域)和WS_CLIPSIBLINGS(创建子窗口使用的Windows风格,用于重绘时剪裁其他子窗口所覆盖的区域)风格。把OnPreCreate改写成如下所示:BOOL COpenGLDemoView::PreCreateWindow(CREATESTRUCT& cs) { // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs cs.style |= (WS_CLIPCHILDREN | WS_CLIPSIBLINGS); return CView::PreCreateWindow(cs); } 产生一个RC的第一步是定义窗口的像素格式。像素格式决定窗口着所显示的图形在内存中是如何表示的。由像素格式控制的参数包括:颜色深度、缓冲模式和所支持的绘画接口。在下面将有对这些参数的设置。我们先在COpenGLDemoView的类中添加一个保护型的成员函数BOOL SetWindowPixelFormat(HDC hDC)(用鼠标右键添加)和保护型的成员变量:int m_GLPixelIndex;并编辑其中的代码如下: BOOL COpenGLDemoView::SetWindowPixelFormat(HDC hDC) {//定义窗口的像素格式 PIXELFORMATDESCRIPTOR pixelDesc= { sizeof(PIXELFORMATDESCRIPTOR), 1, PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL| PFD_DOUBLEBUFFER|PFD_SUPPORT_GDI, PFD_TYPE_RGBA, 24, 0,0,0,0,0,0, 0, 0,

路由器实验报告

实验报告 实验时间2016 年6 月 1 日实验成绩 实验名称路由器配置实验 小组成员冯伟俊、陈宽子 一、实验目的 a、掌握路由器的基本配置; b、掌握路由器的静态路由配置。 二、实验仪器设备及软件 Packet tracer 两个1841路由器、两个2960交换机、四台终端主机PC、串行线一条、直连线若干 三、实验方案 实验分为配置与测试两部分。为了使两人都能熟练操作,一人进行配置,另一人进行测试,出现问题由两人共同排查。 1、按照实验报告所给的拓补图在学生端软件上进行连接并配置。 2、配置个PC端的IP地址、子网掩码、默认网关。 3、进行测试排查问题。 四、实验测试方案 主要测试方案是为检查路由器一边内部网路是否畅通和两个路由器连接的两个网络是否联通,各个PC终端之间能否通信。我们采用以PC1分别ping 终端PC2与PC3. 五、实验步骤 1、按照实验拓扑图进行器材的选择,进行连接后,开始进行两个路由 器R1、R2的配置(图中路由器直接使用的是软件设置的R0与R1)

2、进行PC0、1、2、3的ip与网关的配置。 这是pc0的ip与网关的配置图,其他PC操作一样。 然后进行PC0pingPC1与PC2的测试

实验表明PC0能ping通PC1但是与PC2的试验中出现了请求超时。 因为在交换机的下,PC0与PC1处于同一网络下而PC2则处在另一个路由器连接的网络。 3、R0与R1的静态路由配置 R2的静态路由的配置 R1静态路由的配置 4、测试:使用PC0去ping主机PC1与PC2

PC0依然能够ping通PC1,PC0ping通PC2. 六、实验结果与分析 当R1与R2的静态路由配置成功后,主机PC1才能ping通PC3,但是在路由器一边的内部网路通信,如PC1与PC2之间能够ping通。如此,pc3与pc4之间也可联、通。 七、实验2总结及体会 1、实验中出现了对于路由器的端口DCE与DTE分辨不清,导致了混淆 不清,导致了我们重新配置路由器与终端。后来才知在路由器终端上面有小时钟的图标就是DCE端口。 2、在进行路由器两个端口的配置配置,忘记输入no shutdown使得路由 器与路由器之间,路由器与交换机之间始终没有联通。最后排查接口状态才发现故障。

基于MFC的简单画图程序实验

简单画图程序 【实验目的】 本实验目的是通过构建基于MFC的windows画图程序,使学生: (1) 理解MFC应用程序的运行机制 (2) 掌握使用MFC构建Windows应用程序的基本结构及编程的基本方法 (3) 理解和掌握MFC应用程序消息处理机制及应用 (4) 掌握类向导(ClassWizard)的使用 【实验要求】 (1) 必须做好实验原理的预习。 (2) 需要对提供的程序代码进行分析,并明确实验时还应在何处添加哪些语句。 【实验环境】 Microsoft Windows XP Microsoft Visual C++ 6.0 1 基本功能描述 1) 在单文档菜单中,在菜单行中可插入一个菜单项,命名为绘图,在下拉菜单中可分别设置绘制的图形形状,如直线、矩形及椭圆,线宽选项,有1-5可供选择,还可以设置线色以及填充色,通过弹出的颜色对话框选择需要的颜色,如果不选择线宽、线色以及填充色,则按默认的画笔,画刷来绘制选择的图形。 2) 选择好图形后,通过鼠标可以绘制出相应的直线,矩形或椭圆,鼠标的按下确定图形的起点,鼠标的拖动则确定了图形的终点,即通过鼠标的拖动来决定图形的大小,当鼠标弹起,此图形则绘制完毕。 3) 增添工具栏,设置绘制的图形形状,线色以及填充色,可更方便地选择相应的功能。 2 设计思路 1) 对需要用到的变量进行初始化。 2) 选择相应的图形之后就响应相应的消息处理函数,给shape赋对应的值。选择不同

3) 鼠标的按下响应函数OnLButtonDown(),捕捉鼠标当前位置得到起点的坐标,鼠标的拖动响函数OnMouseMove()改变终点的坐标,鼠标的弹起响应OnLButtonUp(),确定终点坐标,刷新,得到绘制图形。 4) 选择图形或其它属性,可进行下一次绘制。

c++实验报告mfc简单画图程序).doc

V C++程序设计实验报告 一、实验目的 掌握MFC编程 二、实验内容 用MFC向导创建单文档应用程序,一个简单的画图程序。 ?使用C++语言实现 ?使用VC++6.0集成开发环境开发 ?使用MFC应用程序开发框架 三、实验步骤 ?基本功能描述 1. 打开exe文件,在绘图下拉菜单中可分别设置绘制的图形形状,如直线、曲线、矩形及椭圆,线宽选项,有1-6可供选择,线型选项有实线、虚线、点线和点段线供设置,还可以设置线色以及填充色,通过弹出的颜色对话框选择需要的颜色,如果不选择线宽、线色以及填充色,则按默认的画笔,画刷来绘制选择的图形。 2. 选择好图形后,通过鼠标可以绘制出相应的直线,矩形或椭圆,鼠标的按下确定图形的起点,鼠标的拖动则确定了图形的终点,即通过鼠标的拖动来决定图形的大小,当鼠标弹起,此图形 则绘制完毕。 ?设计思路 1. 对需要用到的变量进行初始化。 2. 选择相应的图形之后就响应相应的消息处理函数,给shape赋对应的值。选择不同的线宽,线色与填充色,即可改变画笔或画刷的属性。 3. 鼠标的按下响应函数OnLButtonDown(),捕捉鼠标当前位置得到起点的坐标,鼠标的拖动响函数OnMouseMove()改变终点的坐标,鼠标的弹起响应OnLButtonUp(),确定终点坐标,刷新,得到绘制图形。 4. 选择图形或其它属性,可进行下一次绘制。 ?软件设计 A 设计步骤 1.创建单文档 创建一个MFC AppWizard[exe]工程,命名为“Draw”,如图1所示,并创建单文档,如图2所示。创建成功后,系统自动生成相应的类,如图3所示。

图1 创建工程 图2 创建单文档

计算机实验报告 路由器和子网划分工具的使用

实验四:路由器和子网划分工具的使用 一、实验目的 1.了解路由器的作用; 2.掌握路由器的基本配置方法; 3. 掌握子网及子网掩码的计算方法。 二实验环境 准备交换机1台、PC机4台、路由器1台、2台服务器。 三实验内容 1、子网及子网掩码的计算方法; 2、路由器的基本配置方法; 四实验原理 子网掩码用于辨别IP地址中哪部分为网络地址,哪部分为主机地址。由1和0组成,长32位,全为1的位代表网络号。为了快速确定IP地址的哪部分代表网络号,哪部分代表主机号,判断两个IP地址是否属于同一网络,就产生的子网掩码的概念,子网掩码按IP 地址的格式给出。A类IP地址的默认子网掩码为255.0.0.0;B类的为255.255.0.0;C类的为255.255.255.0。

用子网掩码判断IP地址的网络号与主机号的方法是用IP地址与相应的子网掩码进行与运算,可以区分出网络号部分和主机号部分。 (IP 地址) AND (子网掩码) =网络地址 例如10.68.89.1是A类IP地址,所以默认子网掩码为255.0.0.0,分别转化为二进制进行与运算后,得出网络号为10。再如202.30.152.3和202.30.152.80为C类 IP地址,默认子网掩码为255.255.255.0,进行与运算后得出二者网络号相同,说明两主机位于同一网络。 四实验步骤 1、路由器的配置: 将SW1的0/4端口的连接路由器的fa 0/0端口,服务器的fasteathernet路由器的fa 0/1端口。 1)配置路由器主机名 Router>enable(注:从用户模式进入特权模式) Router#configure terminal(注:从特权模式进入全局配置模式) Router (config)#hostname R1(注:将主机名配置为“R1”) R1 (config)# 2)为路由器各接口分配IP地址 R1 (config)#int erface fa stethernet 0/0 注:进入路由器 fastethernet 0的接口配置模式 R1 (config-if)#ip address 192.168.1.254 255.255.255.0 注:设置路由器 fastethernet 0/0的IP地址为192.168.1.254,对应的子网掩码为255.255.255.0 R1 (config-if)#no shut R1 (config-if)#exit R1 (config)#interface fastethernet 0/1 R1 (config-if)#ip address 172.16.255.254 255.255.0.0 R1 (config-if)#no shut R1 (config-if)#exit 五测试与验证

相关主题
文本预览
相关文档 最新文档