基于VC++MFC程序设计简易画图板32 (8)

合集下载

mfc基于对话框绘制曲线

mfc基于对话框绘制曲线

mfc基于对话框绘制曲线
在MFC(Microsoft Foundation Classes)中,可以使用对话框来绘制曲线。

首先,您需要在对话框资源中添加一个静态控件来作为曲线的绘制区域,然后在对话框类中添加绘制曲线的代码。

在对话框资源中,您可以添加一个静态控件,比如一个“Picture Control”或者“Static”控件,作为曲线的绘制区域。

然后,在对话框类的头文件中添加控件的变量声明,比如`CStatic m_curveArea;`。

接下来,在对话框类的源文件中,您可以重载对话框类的
`OnPaint`函数来进行曲线的绘制。

在`OnPaint`函数中,您可以使用GDI(图形设备接口)函数来绘制曲线,比如`MoveToEx`和
`LineTo`函数来绘制曲线的轨迹。

另外,您也可以使用MFC类库中提供的绘图类(如`CDC`和
`CPen`)来进行曲线的绘制。

您可以创建一个`CDC`对象,然后使用`MoveTo`和`LineTo`函数来绘制曲线。

总的来说,您需要在对话框资源中添加绘制曲线的控件,然后
在对话框类中编写绘制曲线的代码,可以使用GDI函数或MFC提供的绘图类来实现曲线的绘制。

希望这些信息能够帮助您开始在MFC 基于对话框绘制曲线。

建立一个简单地画直线的MFC单文档对话框并实现在对话框里面画直线

建立一个简单地画直线的MFC单文档对话框并实现在对话框里面画直线

建立一个简单地画直线的MFC单文档对话框并实现在对话框里面画直线在MFC单文档应用程序中创建一个对话框窗口并实现在对话框内画直线的过程如下:1.创建MFC单文档应用程序- 在 Visual Studio 中创建一个新的 MFC 单文档应用程序项目。

选择"对话框"作为应用程序类型。

-设置应用程序名称和位置,然后单击"完成"创建项目。

2.设置对话框窗口- 在对话框中添加一个自定义控件。

选择"工具箱"中的"Picture Control"控件,拖动到对话框上。

- 选中图片控件,右键单击并选择"属性"。

更改 ID 为IDC_DRAW_AREA,并将 Border 属性设置为 None。

-拖动控件大小以适应窗口布局,并保存对话框。

3.修改对话框类- 打开对话框类的头文件(例如 CMyDialog.h),添加一个标志变量来跟踪鼠标左键按下的状态:```cppBOOL m_bDrawing;```- 在 CMyDialog.cpp 文件中添加以下消息映射函数:```cppBEGIN_MESSAGE_MAP(CMyDialog, CDialogEx)ON_WM_LBUTTONDOWNON_WM_LBUTTONUPON_WM_MOUSEMOVEEND_MESSAGE_MAP```-在头文件中声明回调函数```cppafx_msg void OnLButtonDown(UINT nFlags, CPoint point);afx_msg void OnLButtonUp(UINT nFlags, CPoint point);afx_msg void OnMouseMove(UINT nFlags, CPoint point);```4.实现画线功能- 在 CMyDialog.cpp 文件中实现 OnLButtonDown 函数,该函数用于开始画线:```cppvoid CMyDialog::OnLButtonDown(UINT nFlags, CPoint point)m_bDrawing = TRUE;CClientDC dc(this);dc.MoveTo(point);}```- 实现 OnLButtonUp 函数,该函数用于结束画线:```cppvoid CMyDialog::OnLButtonUp(UINT nFlags, CPoint point) m_bDrawing = FALSE;}```- 实现 OnMouseMove 函数,该函数用于动态绘制线段:```cppvoid CMyDialog::OnMouseMove(UINT nFlags, CPoint point) if (m_bDrawing)CClientDC dc(this);dc.LineTo(point);}}5.更新对话框消息映射```cppafx_msg void OnPaint(;afx_msg BOOL OnEraseBkgnd(CDC* pDC);```6重写重绘和擦除背景函数- 在 CMyDialog.cpp 文件中添加以下代码来重绘对话框:```cppvoid CMyDialog::OnPaintCPaintDC dc(this); // 用于在对话框上绘制//TODO:在此处添加您的消息处理程序代码}```-添加以下代码来防止对话框背景擦除:```cppBOOL CMyDialog::OnEraseBkgnd(CDC* pDC)return TRUE;}7.运行程序-单击“开始调试”(F5)以运行应用程序。

MFC绘图教程

MFC绘图教程
3/21/2011 12
常用颜色对照表
例:COLLORREF red = RGB(255,0,0);
3/21/2011
13
中获取DC 在MFC中获取 中获取
在如OnDraw等函数中传递一个指向 等函数中传递一个指向CDC 对象的 在如 等函数中传递一个指向 指针
3/21/2011
9
设备环境类的基本功能
3/21/2011
10
CDC类常用绘图函数 类常用绘图函数
Arc:绘制一段弧 : Chord:绘制弦形 : Ellipse:绘制椭圆或圆 : MoveTo:将当前位置移动到指定位置 : LineTo:从当前位置到指定位置画一条直线 : Polyline:画连接指定点的折线段 : PolyBezler:根据两个端点和两个控制点画贝塞尔曲线 : Pie:画冰块 : Polygon:根据两个或两个以上的顶点绘制一个多边形 : Rectangle:根据指定的左上角和右下角坐标绘制一个矩形 : RoundRect:画圆角矩形 : SetPixel:画一个点 :
void CView::OnPaint() { CPaintDC dc(this); OnPrepareDC(&dc); ; OnDraw(&dc); //调用了 调用了OnDraw 调用了 }
可见OnPaint函数也调用了 可见 函数也调用了CView::OnDraw函数。因而一 函数。 函数也调用了 函数 般在OnDraw函数内添加绘图代码,完成绘图任务 函数内添加绘图代码, 般在 函数内添加绘图代码
3/21/2011
16
OnDraw与OnPaint的区别 与 的区别
OnDraw是CView类的成员函数,不响应消息;OnPaint是 是 类的成员函数, 类的成员函数 不响应消息; 是 CWnd类的成员函数,相应 类的成员函数, 消息。 类的成员函数 相应WM_PAINT消息。 消息 CView默认调用的 默认调用的OnPaint函数如下 默认调用的 函数如下

MFC程序设计范文

MFC程序设计范文

MFC程序设计范文MFC(Microsoft Foundation Class)是微软公司开发的一套用于Windows系统的应用程序框架,它提供了一系列的C++类,用于简化Windows程序的开发过程。

MFC基于面向对象的编程思想,提供了许多封装好的类和函数,使得开发者可以更加方便地进行界面设计、事件处理、数据管理等操作。

1. 创建MFC应用程序项目:在Visual Studio中选择新建项目,选择MFC应用程序向导,按照向导的指引完成项目的创建。

2.设计界面:MFC提供了可视化界面设计工具,开发者可以通过拖拽控件、设置属性等方式设计应用程序的界面布局。

控件包括按钮、文本框、列表框、菜单等等。

3.处理事件:事件是用户操作界面时发生的动作,如按钮被按下、列表框的选项被选中等。

在MFC中,可以通过重载响应函数的方式来处理事件。

每个控件都有一系列的事件处理函数,开发者可以根据需要选择合适的函数进行重载,然后在函数中编写事件处理的代码。

4.数据管理:MFC提供了一些数据管理的类,用于处理数据的读取、存储、处理等操作。

开发者可以使用这些类来操作数据库、读取文件、保存设置等。

除了上述基本流程,MFC还提供了一些其他的功能,如线程管理、消息处理、打印输出等。

开发者可以根据实际需求选择适合的功能进行使用。

然而,MFC程序设计也存在一些缺点。

首先,MFC只能在Windows系统上运行,不具备跨平台的能力。

其次,由于MFC是一套较为庞大的类库,如果没有掌握好MFC的使用方法,可能会导致开发效率低下,代码冗长。

另外,MFC的界面设计工具相对较为简陋,对于一些复杂的界面效果可能无法满足需求。

总体来说,MFC是一套适用于Windows系统的程序框架,可以帮助开发者快速搭建Windows程序的框架。

它提供了丰富的类库和工具,使得开发者能够更加轻松地进行界面设计、事件处理、数据管理等操作。

然而,MFC也有一些缺点,如只能在Windows系统上运行、界面设计工具相对简陋等。

mfc简单绘图程序报告

mfc简单绘图程序报告

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中的Rint G RGB中的Gint B RGB中的BCGraph类中int m_nType:保存后重绘时用户的选择int qdx; 重绘起点xint qdy; 重绘起点yint zdx; 重绘终点xint zdy; 重绘终点yCLine类中int cx; 重绘线宽int sx; 重绘起点xint sy; 重绘起点yint zx; 重绘终点xint zy; 重绘终点yint w; 重绘线宽自定义颜色对话框关联变量:IDC_EDIT_RED int m_RedIDC_EDIT_GREEN int m_GreenIDC_EDIT_BLUE int m_BlueIDC_SCROLL_RED CScrollBar m_SredIDC_SLIDER_GREEN CSliderCtrl m_SgreenIDC_SPIN_BLUE CSpinButtonCtrl m_Sblue2 分析、设计与实现2.1 主要功能设计与实现2.1.1 有关文档视图功能的设计与实现单文档结构可序列化的类CGraph从CObject派生可序列化的类CLine从CObject派生对话框类zdyyanse从CDialog派生2.1.2 有关消息处理的设计与实现方案:需要响应的消息应有:鼠标移动、鼠标左键按下、鼠标左键抬起、菜单栏中的画矩形、画直线、画椭圆、自由绘图、更多选项中的自定义颜色、工具栏中的红色、蓝色、绿色、线宽1、线宽2、线宽3、橡皮擦。

MFC画图程序步骤

MFC画图程序步骤

MFC画图程序步骤MFC(Microsoft Foundation Class)是一种用于开辟Windows应用程序的C++类库。

在MFC中,我们可以使用GDI(Graphics Device Interface)来创建和操作图形。

下面是使用MFC创建一个简单的画图程序的步骤。

步骤1:创建一个新的MFC项目首先,打开Visual Studio并选择创建一个新的项目。

在项目类型中,选择Visual C++ -> MFC,然后选择MFC应用程序类型。

输入项目名称并选择保存的位置。

在应用程序类型中,选择“单文档”或者“多文档”视图,具体根据你的需求而定。

点击“确定”按钮创建项目。

步骤2:设计用户界面在MFC应用程序中,用户界面是通过对话框资源来设计的。

在资源视图中,双击IDD_DIALOG(或者其他对话框资源)以打开对话框编辑器。

在对话框编辑器中,你可以添加按钮、文本框、菜单等控件来设计你的用户界面。

在画图程序中,你可以添加一个画布控件来显示绘制的图形。

步骤3:添加绘图功能在MFC中,你可以使用GDI来进行绘图操作。

打开你的对话框类的头文件(例如,CMyDialog.h),添加以下头文件引用:#include <afxwin.h>#include <afxext.h>#include <afxdisp.h>在对话框类的源文件(例如,CMyDialog.cpp)中,添加以下代码来处理绘图操作:```void CMyDialog::OnPaint(){CPaintDC dc(this); // 用于绘制的设备上下文// 在这里进行绘图操作dc.Rectangle(100, 100, 200, 200); // 绘制一个矩形dc.Ellipse(300, 100, 400, 200); // 绘制一个椭圆}```步骤4:处理绘图事件在对话框类的消息映射中添加对绘图事件的处理。

MFC画图的基本方法

MFC画图的基本方法

MFC画图的基本方法1.画笔类,CPen,创建画笔类的对象后,需要调用CreatePen(......)函数创建画笔。

然后将其选入设备描述表中。

pDC->SelectObject(.......);2.设置起点坐标。

在这里调用一个函数来设置坐标原点。

pDC->SetViewportOrg(100,255);3.调用LineTo(point),MoveTo(Point)函数画图。

4.删除创建的画笔对象。

pen.DeleteObject();以下是今天所写的画正弦函数的图像。

创建一个单文档的应用程序。

并且在VIEW类中的OnDraw(。

)函数里面做消息响应。

由于调用了sin()函数,所以要把math.h头文件包含进来。

#include "math.h"void CDrawSinXView::OnDraw(CDC* pDC){CDrawSinXDoc* pDoc = GetDocument();ASSERT_V ALID(pDoc);// TODO: add draw code for native data here//建立画笔CPen pen_Zuobixi,pen_sinx;pen_Zuobixi.CreatePen(PS_SOLID,4,RGB(0,0,0));pen_sinx.CreatePen(PS_SOLID,2,RGB(0,0,255));pDC->SelectObject(&pen_Zuobixi);//指定原点pDC->SetViewportOrg(100,255);pDC->SetTextColor(RGB(255,0,0));//绘制横坐标CString sPIText[]={"-1/2π","","1/2π","π","3/2π","2π","5/2π","3π","7/2π","4π","9/2π","5π"};int n=-1;int nTemp=0;while (nTemp<=660){pDC->LineTo(60*n,0);pDC->LineTo(60*n,-5);pDC->MoveTo(60*n,0);pDC->TextOut(60*n-sPIText[n+1].GetLength()*3,16,sPIText[n+1]);n++;nTemp +=60;}pDC->MoveTo(0,0);CString strTemp;//绘制纵坐标for(n=-4,nTemp = 0;nTemp<=180;n++,nTemp+=60) {pDC->LineTo(0,60*n);pDC->LineTo(5,60*n);pDC->MoveTo(0,60*n);strTemp.Format("%d",-n);pDC->TextOut(10,60*n,strTemp);}double y,radian;pDC->SelectObject(&pen_sinx);for(int x=-60;x<600;x++){//弧度=X坐标/曲线宽度*角系数*π//Y坐标=振幅*曲线宽度*sin(弧度)radian =x/((double)60*2)*PI;y=sin(radian)*2*60;pDC->MoveTo((int)x,(int)y);pDC->LineTo((int)x,(int)y);}pen_sinx.DeleteObject();。

VC++MFC鼠标做图编程实验

VC++MFC鼠标做图编程实验

一、实验目的(1) 熟悉开发环境;(2) 掌握应用MFC类库编写鼠标绘图程序的方法;(3) 掌握MFC环境中绘图函数的使用方法。

二、实验内容创建一个单文档应用程序,实现鼠标的绘图功能。

要求:(1) 创建一个工具栏,有线段、矩形、椭圆三个按钮;(2) 绘图前,选择工具栏上的按钮,确定图形的形状。

按下鼠标左键,开始绘图,结合鼠标的光标坐标值,来确定图形的形状和大小,并随着鼠标的移动在屏幕上实时绘制图形,放开鼠标左键,确定最后的图形,绘制在屏幕上。

三、实验处理列表实现绘图功能的代码清单:1、代码如下#if !defined(AFX_PIC_H__00F5F2B9_A2A6_4ED6_907E_EC07AA16 8545__INCLUDED_)#defineAFX_PIC_H__00F5F2B9_A2A6_4ED6_907E_EC07AA168545__INCL UDED_#if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000class CPic{public:CPic();virtual ~CPic();void Draw(CDC *PDC);public:UINT m_nDrawType;int m_nX0;int m_nY0;int m_nX1;int m_nY1;};#endif// !defined(AFX_PIC_H__00F5F2B9_A2A6_4ED6_907E_EC07AA1685 45__INCLUDED_)2、代码如下:// Pic.cpp: implementation of the CPic class.////////////////////////////////////////////////////////////////////////#include ""#include "Shiyan8.h"#include ""#ifdef _DEBUG#undef THIS_FILEstatic char THIS_FILE[]=__FILE__;#define new DEBUG_NEW#endif//////////////////////////////////////////////////////////////////////// Construction/Destruction//////////////////////////////////////////////////////////////////////CPic::CPic(){}CPic::~CPic(){}void CPic::Draw(CDC *pDC){CPen PenLN,*pOldPen;(PS_SOLID,3,RGB(255,0,0));pOldPen = pDC->SelectObject(&PenLN);switch(m_nDrawType){case 0:pDC->MoveTo(m_nX0,m_nY0);pDC->LineTo(m_nX1,m_nY1);break;case 1:pDC->Ellipse(m_nX0,m_nY0,m_nX1,m_nY1);break;case 2:pDC->Rectangle(m_nX0,m_nY0,m_nX1,m_nY1);break;}pDC->SelectObject(pOldPen);}3、程序如下:// Shiyan8View.cpp : implementation of the CShiyan8View class//#include ""#include "Shiyan8.h"#include "Shiyan8Doc.h"#include "Shiyan8View.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// CShiyan8ViewIMPLEMENT_DYNCREATE(CShiyan8View, CView)BEGIN_MESSAGE_MAP(CShiyan8View, CView)//{{AFX_MSG_MAP(CShiyan8View)ON_COMMAND(ID_DRAW_FILEOPEN, OnDrawFileopen)ON_UPDATE_COMMAND_UI(ID_DRAW_FILEOPEN, OnUpdateDrawFileopen)ON_COMMAND(ID_DRAW_FILESA VE, OnDrawFilesave)ON_UPDATE_COMMAND_UI(ID_DRAW_FILESA VE, OnUpdateDrawFilesave)ON_WM_LBUTTONDOWN()ON_WM_MOUSEMOVE()ON_WM_LBUTTONUP()//}}AFX_MSG_MAPON_COMMAND_RANGE(ID_DRAWTYPE_LINE,ID_DRAWTYPE_RECT,OnDrawType)ON_UPDATE_COMMAND_UI_RANGE(ID_DRAWTYPE_LIN E, ID_DRAWTYPE_RECT,OnUpdateDrawType)// Standard printing commandsON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT,CView::OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CShiyan8View construction/destructionCShiyan8View::CShiyan8View(){// TODO: add construction code herem_nDrawType = 0;m_nX0 = 0;m_nY0 = 0;m_nX1 = 0;m_nY1 = 0;m_nPicNum = 0;}CShiyan8View::~CShiyan8View(){}BOOL CShiyan8View::PreCreateWindow(CREATESTRUCT& cs) {// TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT csreturn CView::PreCreateWindow(cs);}/////////////////////////////////////////////////////////////////////////////// CShiyan8View drawingvoid CShiyan8View::OnDraw(CDC* pDC){CShiyan8Doc* pDoc = GetDocument();ASSERT_V ALID(pDoc);// TODO: add draw code for native data herefor(int i=0;i<m_nPicNum;i++){m_Pic[i].Draw(pDC);}}/////////////////////////////////////////////////////////////////////////////// CShiyan8View printingBOOL CShiyan8View::OnPreparePrinting(CPrintInfo* pInfo){// default preparationreturn DoPreparePrinting(pInfo);}void CShiyan8View::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/){// TODO: add extra initialization before printing}void CShiyan8View::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/){// TODO: add cleanup after printing}/////////////////////////////////////////////////////////////////////////////// CShiyan8View diagnostics#ifdef _DEBUGvoid CShiyan8View::AssertValid() constCView::AssertValid();}void CShiyan8View::Dump(CDumpContext& dc) const{CView::Dump(dc);}CShiyan8Doc* CShiyan8View::GetDocument() // non-debug version is inline{ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CShiyan8Doc)));return (CShiyan8Doc*)m_pDocument;}#endif //_DEBUG/////////////////////////////////////////////////////////////////////////////// CShiyan8View message handlersvoid CShiyan8View::OnDrawFileopen(){// TODO: Add your command handler code here}void CShiyan8View::OnUpdateDrawFileopen(CCmdUI* pCmdUI){// TODO: Add your command update UI handler code herepCmdUI->Enable(FALSE);}void CShiyan8View::OnDrawFilesave(){// TODO: Add your command handler code herevoid CShiyan8View::OnUpdateDrawFilesave(CCmdUI* pCmdUI){// TODO: Add your command update UI handler code herepCmdUI->Enable(FALSE);}void CShiyan8View::OnDrawType(WORD nID){m_nDrawType = nID-ID_DRAWTYPE_LINE;}void CShiyan8View::OnUpdateDrawType(CCmdUI* pCmdUI){pCmdUI->SetRadio(m_nDrawType == pCmdUI->m_nID-ID_DRAWTYPE_LINE);}void CShiyan8View::OnLButtonDown(UINT nFlags, CPoint point){// TODO: Add your message handler code here and/or call defaultm_nX0 = m_nX1 = ;m_nY0 = m_nY1 = ;CView::OnLButtonDown(nFlags, point);}void CShiyan8View::OnMouseMove(UINT nFlags, CPoint point){// TODO: Add your message handler code here and/or call defaultCClientDC dc(this);CPen PenBK,PenLN,*pOldPen;if(nFlags & MK_LBUTTON)(PS_SOLID,1,RGB(255,255,255)); (PS_DASH, 1,RGB(255,0,0)); pOldPen = (&PenBK);switch(m_nDrawType){case 0:(m_nX0,m_nY0);(m_nX1,m_nY1);break;case 1:(m_nX0,m_nY0,m_nX1,m_nY1);break;case 2:(m_nX0,m_nY0,m_nX1,m_nY1);break;}(&PenLN);m_nX1 = ;m_nY1 = ;switch(m_nDrawType){case 0:(m_nX0,m_nY0);(m_nX1,m_nY1);break;case 1:(m_nX0,m_nY0,m_nX1,m_nY1);break;case 2:(m_nX0,m_nY0,m_nX1,m_nY1);break;}(pOldPen);CView::OnMouseMove(nFlags, point);}void CShiyan8View::OnLButtonUp(UINT nFlags, CPoint point){// TODO: Add your message handler code here and/or call default CClientDC dc(this);CPen PenBK,PenLN,*pOldPen;(PS_SOLID,1,RGB(255,255,255));(PS_SOLID,3,RGB(255,0,0));pOldPen = (&PenBK);switch(m_nDrawType){case 0:(m_nX0,m_nY0);(m_nX1,m_nY1);break;case 1:(m_nX0,m_nY0,m_nX1,m_nY1);break;case 2:(m_nX0,m_nY0,m_nX1,m_nY1);break;}(&PenLN);m_nX1 = ;m_nY1 = ;switch(m_nDrawType){case 0:(m_nX0,m_nY0);(m_nX1,m_nY1);break;case 1:(m_nX0,m_nY0,m_nX1,m_nY1);break;case 2:(m_nX0,m_nY0,m_nX1,m_nY1);break;}m_Pic[m_nPicNum].m_nDrawType = m_nDrawType;m_Pic[m_nPicNum].m_nX0 = m_nX0;m_Pic[m_nPicNum].m_nY0 = m_nY0;m_Pic[m_nPicNum].m_nX1 = m_nX1;m_Pic[m_nPicNum].m_nY1 = m_nY1;m_nPicNum++;(pOldPen);CView::OnLButtonUp(nFlags, point);}其他的程序略四、实验总结:1.在Resource View中展开menu资源菜单中,设计如下:2、在Resource View中展开Toorlbar资源菜单中,设计如下:3、本实验的一部分代码可以从实验六中复制过来,但应注意变量名称。

C++绘图

C++绘图

pDC>Pie(300,100,600,400,300,400,600,40 0);
OldBrush=pDC->SelectObject(&Brush);
pDC>RoundRect(100,100,300,300,30,60); pDC->SetBkColor(RGB(255,255,0));
pDC->SetBkMode(OPAQUE);
pDC->Ellipse(300,100,500,200);
(1) 生成笔( CPen 类)和刷( CBrush ) 类的实例; CPen pen; CBrush brush;
(2) 调用 CPen 类和 CBrush 类的成员函 数来初始化笔和刷; 画笔的初始化 CPen::CreatePen
BOOL CreatePen(int nPenStyle,
(3)Chord 一个椭圆和一条直线相交的图形) BOOL Chord(int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4); (4) Polygon
BOOL Polygon( LPPOINT lpPoints, int nCount ); LpPoints是一个指向CPoint实例的POINT 数组的指针 其中 nCount>2
1.2 选择绘图工具
画笔,画刷,字体等等。 系统默认的画笔和画刷: 默认的画笔画出的线为宽度为1像素的 黑色实线。默认的画刷是白色的,己 用默认的画刷填充图形时,图形的内 部填充成白色。
1.2.1 选用库存的绘图工具
CDC::SelectStockObject(int nIndex); void CMyView::OnDraw(CDC*pDC) { pDC-> SelectStockObject(WHITE_PEN); pDC-> SelectStockObject(GRAY_BRUSH); }

《用Visual-C开发GIS系统》第2章-MFC应用程序设计的开发工具PPT课件

《用Visual-C开发GIS系统》第2章-MFC应用程序设计的开发工具PPT课件
ResourceView(资源视图)是对程序的资源进行可
.ቤተ መጻሕፍቲ ባይዱ
9
视化管理的工具。利用它调用AppStudio可以对 程序所拥有的各种资源(菜单、工具条、对话 框、加速键、热键等)进行可视化管理。
FileView(文件视图)是管理一个开发项目所包含 的所有文件的工具。通过它可以用来管理一个 开发项目所包含的源文件。
.
20
.
21
.
22
.
23
.
24
⑦ 在图2-7所示的MFC AppWizard-Step 5 of 6对话框中, 用户需要对是否在生成的程序源代码中加入注释进 行选择。在本例中,选择“Yes, please”(加入注释) 选项。另外有一个选项是选择在产生的应用程序中 如何应用MFC,有两种选择:“As a shared DLL”(作 为共享动态链接库)和“As a statically linked library”(作为静态链接库)。选择“As a shared DLL” 选项,单击Next按钮,就会进入图2-8所示的MFC AppWizard-Step 6 of 6对话框。
.
16
2.1.2 利用MFC AppWizard产生MFC应用程序的步骤
在这一节中,应用MFC AppWizard生成一个叫做Draw的应 用程序。以下是利用AppWizard产生MFC应用程序框架 的步骤:
首先,进入VC++的工作区,运行工作区上的“File”菜单 下的“New”命令,打开New对话框,然后进行如下步 骤的操作:
.
13
图2 AppWizard创建.框架程序对话框
14
表2-1 AppWizard创建的应用程序类型

c++课程设计(简易绘图程序)

c++课程设计(简易绘图程序)

目录1、需求与功能分析 (1)2、系统总体框架 (2)3、模块设计与分析 (3)3.1画图模块 (3)3.2贴图模块 (3)3.3窗口模块 (4)3.4菜单模块 (4)3.5工具栏与状态栏模块 (4)4、类的设计与分析 (4)4.1、CAboutDlg类 (4)4.2、CChildFrame类 (4)4.3、CDib类 (4)4.4、CDrawingDoc类 (5)4.5、CDrawingView类 (6)4.6、CMainFrame类 (7)4.7、CSettingDlg类 (7)5、特色算法分析 (8)5.1 CDib类中的显示bmp位图 (8)5.2 CDrawingView类中的画图部分 (10)6、功能测试 (13)7、存在的不足与对策 (16)8、程序源代码 (17)9、使用手册 (17)10、参考文献 (20)1、需求与功能分析为了检验一个学期以来自己学习c++这门课程能够学到多少知识,加上原来就对图像处理就比较感兴趣,曾经更有想过要做一个可以合成红蓝3D图片的一款软件,就是那种需要带上红蓝眼镜才可以看到3D效果的那种图片,自己也有用photoshop做过这样的图片,但是photoshop需要调很多东西才能合成这样的图片,而且还要用相机送两个不同的角度拍两张照片作为源图片去合成红蓝3D图片,虽然我知道原理并不难,但是当我选择了”简易绘图程序”这个课程设计的题目之后,才发现每实现一个功能都需要花很多的精力,而且实现那些功能之后还会发现各种各校的bug,需要细心去寻找解决的办法。

如今课程设计也要上交,一样还有很多我想实现的功能都还没实现,最终也没有实现我想要实现的功能---合成红蓝3D图片。

只做了一些简单的绘图功能。

功能分析,目前这个软件的主要功能有如下:1、画直线:通过OnLine()函数实现。

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

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

基于MFC程序设计

基于MFC程序设计

MFC窗口对象和Windows窗口对象的关 系如图2-1所示。其他的Windows Object 和对应的MFC Object也有类似的关系。
m _hD C m _hA ttriD C … 成员函数1 成员函数2 … C W nd
CDC
W indows HDC C D C 输出设备描述表
W indows HDC C D C 属性设备描述表
� 文档边框窗口类从CMDIChildWnd
类派生,MDI应用程序使用文档边框 窗口来包含视窗口。
视类
� 视类从CView或它的派生类派生。
视和文档联系在一起,在文档和用 户之间起中介作用,即视在屏幕上 显示文档的内容,并把用户输入转 换成对文档的操作。
� C???View
文档模板类
� 文档模板类一般不需要派生。MDI应
� 如果是SDI应用程序,从
CFrameWnd类派生边框窗口类,边 框窗口的客户子窗口(MDIClient)直 接包含视窗口;如果是MDI应用程 序,从CMDIFrameWnd类派生边框 窗口类,边框窗口的客户子窗口 (MDIClient)直接包含文档边框窗口。
� CMainFrame
� 如果要支持工具条、状态栏,则派

� 图形设备接口(GDI

)
DOS环境中,要在打印机上打印一幅图形是 非常复杂的事件。Windows则提供了一个抽象 的接口,称为图形设备接口(Graphical Device Interface,简称GDI),使得用户直接利用系统 的GDI函数就能方便实现输入或输出,而不必 关心与系统相连的外部设备的类型。 � 图像的数据和操作均封装在窗口类CWnd中, 只是提供给用户一个成员变量m_hWnd (窗 口句柄),用户通过窗口句柄完成有关窗口的 大部分操作。

实验一 MFC基本绘图

实验一 MFC基本绘图

数学与计算科学系学生实验报告实验课程名称:计算机图形学实验内容:实验一 MFC基本绘图系别:年级:专业班:学生姓名:学号:开课时间:年下学期一、实验要求1. 按照教材第40页2.2节所介绍的操作步骤,熟悉MFC应用程序的创建过程,并完成第50页的例2-5。

2.在上面程序的基础上,通过设置不同的画笔和画刷,至少实现8个不同图形的绘制,如:椭圆、矩形、实线、虚线、位图显示、五角星(多边形)、圆弧、扇形、Bezier曲线等等。

二、实验过程1.启动Visval 6.0++,创建MFC单文档工程。

2. 在MFC的OnDraw(CDC* pDC)中“ // TODO: add draw code for native data here”下进行编程。

3.建立直角坐标系,并标出x,y轴和原点O。

4.在坐标系里画图。

5.用图片填充背景时要先将图片导入MFCresources中。

6.画五角星时在头文件中加入以下代码:#include "math.h"#define PI 3.1415926#define Round(d) int(floor(d+0.5))三、程序代码void CMywork1View::OnDraw(CDC* pDC){CMywork1Doc* pDoc = GetDocument();ASSERT_V ALID(pDoc);// TODO: add draw code for native data hereCRect rect;//定义矩阵GetClientRect(&rect);//获得客户区矩阵pDC->SetMapMode(MM_ANISOTROPIC);//设置映射模式pDC->SetWindowExt(100,100);//设置窗口pDC->SetViewportExt(100,100);//设置视区:x轴水平向右为正,y轴垂直向上为正pDC->SetViewportOrg(rect.Width()/2,rect.Height()/2);//设置客户区中心为坐标系原点rect.OffsetRect(-rect.Width()/2,-rect.Height()/2);//客户区矩阵校正//建立坐标系CPen NewPen,*pOldPen;NewPen.CreatePen(PS_SOLID,1,RGB(0,255,0));//画实线,选择绿色画笔pOldPen=pDC->SelectObject(&NewPen);pDC->MoveTo(-rect.right,0); //自定义坐标轴pDC->LineTo(rect.right,0);pDC->MoveTo(0,-rect.bottom);pDC->LineTo(0,rect.bottom);pDC->MoveTo(rect.right,0); //画x轴的箭头pDC->LineTo(rect.right-10,-7);pDC->MoveTo(rect.right,0); //画x轴的箭头pDC->LineTo(rect.right-10,7);pDC->MoveTo(0,-rect.bottom); //画y轴的箭头pDC->LineTo(7,10-rect.bottom);pDC->MoveTo(0,-rect.bottom); //画y轴的箭头pDC->LineTo(-7,10-rect.bottom);pDC->TextOut(rect.right-15,5,"x"); //显示x轴pDC->TextOut(25,15-rect.bottom,"y"); //显示y轴pDC->TextOut(-15,10,"O"); //显示原点//直线---画实线1CPoint A(50,50),B(450,300);CPen NewPen1,*pOldPen1;NewPen1.CreatePen(PS_SOLID,1,RGB(0,225,225));//画实线,选择青色画笔pOldPen1=pDC->SelectObject(&NewPen1);pDC->MoveTo(A);pDC->LineTo(B);pDC->SelectObject(pOldPen1);pDC->TextOut(50,50,'A');pDC->TextOut(450,300,'B');pDC->TextOut(200,200,"实线");//直线---画虚线2CPoint C(300,150),D(600,100);CPen NewPen2,*pOldPen2;NewPen2.CreatePen(PS_DASH,1,RGB(225,0,0));//画虚线,选择红色画笔pOldPen2=pDC->SelectObject(&NewPen2);pDC->MoveTo(C);pDC->LineTo(D);pDC->SelectObject(pOldPen2);pDC->TextOut(300,150,'C');pDC->TextOut(600,100,'D');pDC->TextOut(450,100,"虚线");//画椭圆3rect.DeflateRect(100,50);CBrush * pOldBrush3;pOldBrush3=(CBrush *)pDC->SelectStockObject(NULL_BRUSH);//选择透明画刷pDC->Ellipse(rect);//绘制椭圆pDC->SelectObject(pOldBrush3);//画圆角矩形4CBrush NewBrush4,*pOldBrush4;NewBrush4.CreateSolidBrush(RGB(255,0,0));pOldBrush4=pDC->SelectObject(&NewBrush4);pDC->RoundRect(-400,-200,-50,-40,40,20);pDC->SelectObject(pOldPen);pDC->SelectObject(pOldBrush4);//画Bezier样条9CPoint pp[7];pp[0]=CPoint(20,-200);pp[1]=CPoint(90,-70);pp[2]=CPoint(220,-30);pp[3]=CPoint(250,-160);double a=(pp[3].y-pp[2].y)/(pp[3].x-pp[2].x);double x=270,y=a*(x-pp[3].x)+pp[3].y;pp[4]=CPoint(Round(x),Round(y));pp[5]=CPoint(480,-130);pp[6]=CPoint(400,-25);for(int j=0;j<7;j++){if(0==j)pDC->MoveTo(pp[j]);elsepDC->LineTo(pp[j]);pDC->Ellipse(pp[j].x-5,pp[j].y-5,pp[j].x+5,pp[j].y+5);//黑色实心圆绘制控制点}CPen NewPen9,*pOldPen9;NewPen9.CreatePen(PS_SOLID,3,RGB(255,0,0));//红色画笔绘制样条pOldPen9=pDC->SelectObject(&NewPen9);pDC->PolyBezier(pp,7);//绘制Bezier样条pDC->SelectObject(pOldPen9);pDC->TextOut(280,-100,"Bezier曲线");//绘制五角星6CPen penBlue(PS_SOLID,5,RGB(0,0,255));//定义五个像素宽的蓝色画笔CPen *pOldPen6=pDC->SelectObject(&penBlue);CBrush brushRed(RGB(255,0,0));//定义红色画笔CBrush * pOldBrush6=pDC->SelectObject(&brushRed);pDC->SetPolyFillMode(WINDING);//设置填充模式int r=200;//正五边形外接圆的半径CPoint p[5];//定义正五边形顶点数组double Beta=2*PI/5;//定义每个顶点的圆心角double Alpha=PI/10;//定义起始角for(int i=0;i<5;i++){p[i].x=Round(r*cos(i*Beta+Alpha));//计算正五边形顶点坐标p[i].y=Round(r*sin(i*Beta+Alpha));}CPoint v[5];//定义五角星顶点数组v[0]=p[0];v[1]=p[2];v[2]=p[4];v[3]=p[1];v[4]=p[3];//转储顶点pDC->Polygon(v,5);//绘制五角星pDC->SelectObject(pOldPen6);//恢复画笔pDC->SelectObject(pOldBrush6);//恢复画刷//画扇形7CBitmap NewBitmap7; CBrush NewBrush7,*pOldBrush7;NewBrush7.CreatePatternBrush(&NewBitmap7);//将背景图作为画刷填充扇形pOldBrush7=pDC->SelectObject(&NewBrush7);CPen *pOldPen7;pOldPen7=(CPen*)pDC->SelectStockObject(NULL_PEN);CPoint ld,rt,sp,ep;ld=CPoint(500,150),rt=CPoint(100,300);//第一个扇形的位置sp=CPoint(-100,-300),ep=CPoint(-500,-150);pDC->Pie(CRect(ld,rt),sp,ep);//画扇形函数CBrush Brush7;Brush7.CreateSolidBrush(RGB(0,255,255));//为下面的的扇形配青色pDC->SelectObject(&Brush7);ld=CPoint(-400,-170),rt=CPoint(-300,-130);//第二个扇形的位置sp=CPoint(-200,-100),ep=CPoint(-500,-100);pDC->Pie(CRect(ld,rt),sp,ep);//画获取像素图8srand((unsigned)time(NULL));//随机变量(随时间变化)COLORREF crColor;int m,n;for(n=50;n<100;n++)for(m=-100;m<-50;m++)pDC->SetPixelV(m,n,RGB(rand()%256,rand()%256,rand()%256));//生成随机像素点for(n=50;n<100;n++)for(m=-100;m<-50;m++){crColor=pDC->GetPixel(m,n);//获取原矩形区域的像素点pDC->SetPixelV(m-200,n+50,crColor);//用获取的像素点在y-90的位置生成原图}}四、实验结果。

计算机程序设计实践 MFC画图软件

计算机程序设计实践  MFC画图软件
m_nDrawType=6;
}
void CCGraphicsView::OnPie()
{
// TODO: Add your command handler code here
m_nDrawType=7;
}
void CCGraphicsView::OnRoundrect()
{
// TODO: Add your command handler code here
{
// TODO: Add your command handler code here
CSettingDlg dlg;
dlg.m_nLineWidth=m_nLineWidth;/*保存用户设定的值*/
dlg.m_nLineStyle=m_nLineStyle;
if (IDOK==dlg.DoModal())
目的:
1.掌握用VC++6.0开发环境开发软件的方法;
2.熟悉获得帮助的方法;
3.掌握SDI应用程序结构,熟悉基于对话框的应用程序编程方法;
4.掌握用资源编辑器进行图标,菜单,工具栏,对话框等资源的编辑;
5.掌握对话框,常用控件的使用方法;
6.熟悉文档/视图结构,掌握文档和视图的相互控制技巧;
2.需求分析
计算机程序设计实践
课程设计报告
班级_计算机科学与技术1303班
学号130405320
姓名__________韦昌杆___________
指导教师___________杨威_____________
2015年1月8日
交互式绘图程序
1.引言
计算机的发展也是计算机语言的发展得到了很大的提高,人们的生活中离不 开图像,除了我们可以用铅笔在纸上画图外,我们也可以在电脑上绘制我们的想象,本实验就是基于VC++的一个小型的绘图软件。

C++简单画图程序课设

C++简单画图程序课设

目录1.基本功能描述 ....................................................................................................... - 1 -2.设计思路 ............................................................................................................... - 1 -3.软件设计 ............................................................................................................... - 4 -3.1 设计步骤 .................................................................................................... - 4 -3.2 界面设计 .................................................................................................... - 9 -3.3 关键功能的实现 ........................................................................................ - 9 -4.结论与心得体会 ................................................................................................. - 10 -5.参考文献 ............................................................................................................. - 11 -6.思考题 ................................................................................................................. - 11 -7.附录 ..................................................................................................................... - 12 -7.1 调试报告 .................................................................................................. - 12 -7.2 测试结果 .................................................................................................. - 13 -7.3 关键源代码 .............................................................................................. - 15 -简单画图程序1.基本功能描述1)设计一个程序可完成绘制直线,矩形和椭圆的功能。

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

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

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 创建单文档图3 生成类2.编辑菜单添加需要的菜单项,如图4所示;并在菜单的属性中设定好所对应的ID,如图5所示,各项菜单对应的ID如表1所示(其中线宽菜单为弹出菜单,只需在菜单项目属性中的弹出选项前打勾即可,分隔线亦只需在菜单项目属性中选中分隔符选项即可)。

MFC绘图 实验报告

MFC绘图 实验报告

基于MFC的绘图软件目录基于MFC的绘图软件11 .引言 (2)2.MFC设备上下文及绘图的基本理论知识 (2)2.1 GDI(Graphic Device Interface)绘图的实现 (2)2.2 MFC图形对象类 (2)2.3 库存的GDI对象 (3)2.4与绘图有关的简单数据类型 (4)2.5 MFC应用程序框架中的图形绘制和刷新 (5)3.设计的主体内容MFC设备描述表---CDC类 (5)3.1 CDC类及其派生类 (5)3.2 文本输出 (6)3.3CDC常用的绘图函数 (6)3.4画笔和画刷 (8)4.软件主体设计 (8)4.1 资源编辑 (8)4.2 具体实现 (11)5.结果分析与讨论 (19)6.总结 (19)附录:简单绘图软件作品说明............................................ 错误!未定义书签。

1 .引言计算机的发展也是计算机语言的发展得到了很大的提高,人们的生活中离不开图像,除了我们可以用铅笔在纸上画图外,我们也可以在电脑上绘制我们的想象,本实验就是基于VC++的一个小型的绘图软件,虽然麻雀虽小五脏俱全。

本课题就是要实现这一小小的软件。

2.MFC 设备上下文及绘图的基本理论知识2.1 GDI(Graphic Device Interface)绘图的实现图形设备接口(GDI )可以理解为一个可执行程序,它处理来自windows 应用程序的图形函数调用,然后把这些调用传递给合适的设备驱动程序,由设备驱动程构关系如下:设备描述表(DC )是一种windows 数据结构,它包含了与一个设备(如显示器)的绘制属性的相关信息。

所有的绘制操作通过一个设备上下文对象进行,该对象封装了实现绘制线条,形状和文本的windows API 函数。

设备上下文可以用来向屏幕,打印机和图元件输入结果。

2.2 MFC 图形对象类Windows 提供了多种用于在设备描述表中进行绘图的图形对象,如画笔,位图,调色板,区域,和路径等。

C#实现简单的画图板功能

C#实现简单的画图板功能

C#实现简单的画图板功能2009-04-14 13:28:00| 分类:编程之路|字号订阅最近在研究C#,希望用它实现一个简单的画图板的功能,经过在网上搜索各位牛大的源代码和自己的研究,终于可以完成这一目标了。

好了,闲话少说,看代码说话。

// 这里以画线功能为例,以下代码可实现类似于CAD里面的橡皮筋画线过程.public partial class Form1 : Form{bool isDrawLine = false;//标志是否进入画线状态Graphics g;//GDI+对象Point Pt1;//Point Pt2;//两个端点,用于画线的public Form1(){InitializeComponent();g = Graphics.FromHwnd(this.Handle);//创建一个新的GDI+对象Pt1 = new Point();Pt2 = new Point();}private void button1_Click(object sender, EventArgs e){//一个按钮,按下的时候进入画线状态,再按一次退出画线状态if (isDrawLine){isDrawLine = false;}else{isDrawLine = true;}}private void Form1_MouseDown(object sender, MouseEventArgs e) {//按下鼠标时发生if (isDrawLine){if (Pt1.isEmpty)//Pt1的值都为0,表示第一次按下鼠标{Pt1 = e.Location; // 获取起始点的坐标位置//Pt2 = e.Location;}else{g.DrawLine(Pens.Red,Pt1,e.Location);//真正要画的直线//Pt1.X = 0;//清零//Pt1.Y = 0;//Pt2.X = 0;//Pt2.Y = 0;Pt1 = Pt2; // 将线的结束点赋给起始点,实现连续画线}}}private void Form1_MouseMove(object sender, MouseEventArgs e) {//移动鼠标if (isDrawLine && !Pt1.IsEmpty){//这句很重要,画一条和背景色一样的线,清除上一次画的线//我选的颜色是白色,这样窗体的背景色也要设置成白色g.DrawLine(Pens.White, Pt1, Pt2);g.DrawLine(Pens.Red,Pt1,e.Location);//画一条线Pt2 = e.Location;}}}好了,到这里一个简单的画图过程就实现了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

个人小助理
测试报告
成员:信101班王子威张天笑吕文侨北京建筑工程学院理学院
2012年1月
软件测试报告
1.范围
1.1标识
软件名称:个人小助理
适用系统:适用于Win 9x/2000/XP
功能标号:
1.添加
2.修改
3.删除
4.刷新
5.退出
6.开机启动
7.桌面显示时间
8.指针穿透
9.桌面时钟置顶
10.时间下拉菜单
11.提醒方式下拉菜单
12.提醒内容添加
13.提醒功能
1.2系统概述
本软件可以在桌面显示时间,并使时间始终显示在屏幕最前方,鼠标可以穿透不受任何影响;用户可以自己来设定时间,来进行事件提醒,可以设置提醒事件,可以选择提醒的方式:闹钟提醒(通过机体蜂鸣器,即使没有音箱,耳麦等播放设备)、关机、重启、启动所选程序、锁定。

1.3文档概述
本文档用于测试个人小助理v2.0的,发现并记录不足,为使用者提供参考。

2.引用文档
应按文档号和标题列出本报告引用的所有文档。

3.定义
(必须提供全部需求的术语、缩写词及略语的定义,以便对本文档进行适当的解释。

)
4.测试概述
分节描述本报告所覆盖的每项测试的结果
4.1(测试名称及项目唯一标识号)
测试时间:2010年12月31日
测试地点:北京建筑工程学院基础教学楼B座203机房。

软件:VC++6.0
测试人员:张天笑
硬件配置:CPU:Inter Core2 E4600
内存:2.00GB
测试版本:个人小助理v1.0
4.1.1 按钮测试
4.1.1.1添加按钮测试:点击添加按钮弹出新的窗体——测试成功。

4.1.1.5退出按钮测试:点击退出按钮退出软件——测试成功。

测试时间:2012年1月1日
测试地点:北京建筑工程学院基础教学楼B座203机房。

软件:VC++6.0
测试人员:张天笑
硬件配置:CPU:Inter Core2 E4600
内存:2.00GB
测试版本:个人小助理v1.1
4.2.1 按钮测试
4.2.1.3 删除按钮测试:点击删除按钮删除所选项——测试失败
失败原因:当设定时间只有一个时不能进行删除所选项。


4.2.1.2 修改按钮测试:点击修改按钮时修改所选项——测试成功
4.2.2 勾选测试
4.2.2.6 开机启动测试:测试成功
测试时间:2012年1月2日
测试地点:北京建筑工程学院基础教学楼B座203机房。

软件:VC++6.0
测试人员:张天笑
硬件配置:CPU:Inter Core2 E4600
内存:2.00GB
测试版本:个人小助理v1.3
4.3.1 勾选测试
4.3.1.7桌面时钟显示:测试成功
不足:不能进行底色镂空设置
4.3.2 下拉菜单测试
4.3.2.10 时间设置下拉菜单:测试成功
4.3.2.11 提醒方式下拉菜单:测试成功
测试时间:2012年1月3日
测试地点:北京建筑工程学院基础教学楼B座203机房。

软件:VC++6.0
测试人员:张天笑
硬件配置:CPU:Inter Core2 E4600
内存:2.00GB
测试版本:个人小助理v1.5
4.4.1 勾选测试
4.4.1.7 桌面时钟底色镂空显示:测试成功
4.4.1.8 指针穿透勾选:测试成功
4.4.1.9 时钟置顶:测试成功
4.4.2 闹钟添加测试
4.4.2.1 添加一个新的提示时间:测试成功
4.4.2.12 添加提示内容:测试成功
4.4.2.13 添加提醒方式:测试成功
测试时间:2012年1月6日
测试地点:北京建筑工程学院基础教学楼B座203机房。

软件:VC++6.0
测试人员:张天笑
硬件配置:CPU:Inter Core2 E4600
内存:2.00GB
测试版本:个人小助理v1.8
4.5.1 闹钟提醒方式测定
4.5.1.13.1 闹钟提醒:测试成功
4.5.1.13.2 关机:测试成功
4.5.1.13.3 重启:测试成功
4.5.1.13.4 启动程序:测试成功
测试时间:2012年1月10日
测试地点:北京建筑工程学院基础教学楼B座203机房。

软件:VC++6.0
硬件配置:CPU:Inter Core2 E4600
内存:2.00GB
测试版本:个人小助理v2.0
4.6.1 闹钟提醒方式测定
4.6.1.13.5 锁定电脑:测试成功
4.6.2 整体测试
4.6.2.1全部按钮测试
4.6.2.1.1 添加按钮:测试成功
4.6.2.1.2 修改按钮:测试成功
4.6.2.1.3 删除按钮:测试失败
失败原因:当设定时间只有一个时无法删除
4.6.2.1.4 刷新按钮:测试成功
4.6.2.1.5 退出按钮:测试成功
4.6.2.2 全部勾选项测试
4.6.2.2.6 开机启动:测试成功
4.6.2.2.7 桌面显示时间:测试成功
4.6.2.2.8 指针穿透:测试失败
失败原因:当没有勾选显示时间时,选择指针穿透软件会报错。

4.6.2.2.9 时钟置顶:测试成功
5.测试结果
本软件有些缺陷:
1、不能记录已设定时间;
2、选择提示方式时,在选择重启或关机后从新选择启动程序,不会显示提示内容设置。

3、当设定时间只有一个时删除后,屏幕上时间不会消失,但到时不会提醒。

4、当没有勾选显示桌面时钟时,选择指针穿透会造成程序错误。

5.1(测试的名称和项目唯一标识号)测试结果
测试标示用例:
a:当日下午4:30分
内容:现在时间4:30
b:当日下午4:33
内容:现在时间4:33
c:当日下午4:33
内容:现在时间4:33
d:当日下午4:33
内容:现在时间4:33
e:当日下午4:33
内容:现在时间4:33
B:闹钟
C:启动计算器
D:关机
E:重启
F:锁定
测试结果一览表示例
测试描述版本测试结果问题报告标识
添加aB V1.0 4.1.1.1添加按钮测试:点击添加按钮
弹出新的窗体——测试成功。

4.1.1.5退出按钮测试:点击退出按钮
退出软件——测试成功。

添加aB V1.1 4.2.1.3 删除按钮测试:点击删除按钮删除所选
项——测试失败
失败原因:当设定时间只有一个时不能进行删除
所选项。


4.2.1.2 修改按钮测试:点击修改按钮时修改所
选项——测试成功
4.2.2.6 开机启动测试:测试成功
V1.1.4.2.1.3
添加aB V1.3 4.3.1.7桌面时钟显示:测试成功
不足:不能进行底色镂空设置
4.3.2 下拉菜单测试
4.3.2.10 时间设置下拉菜单:测试成功
4.3.2.11 提醒方式下拉菜单:测试成功
V1.3.4.3.1.7
添加aB V1.5 4.4.1.7 桌面时钟底色镂空显示:测试成功
4.4.1.8 指针穿透勾选:测试成功
4.4.1.9 时钟置顶:测试成功
4.4.2.1 添加一个新的提示时间:测试成功
4.4.2.12 添加提示内容:测试成功
4.4.2.13 添加提醒方式:测试成功
添加AB 添加bC 添加cD V1.8 4.5.1.13.1 闹钟提醒:测试成功
4.5.1.13.2 关机:测试成功
4.5.1.13.3 重启:测试成功
添加dE 4.5.1.13.4 启动程序:测试成功添加aF V2.0 4.6.1.13.5 锁定电脑:测试成功
添加aB 添加bC 添加cD 添加dE 添加eF V2.0 4.6.1.13.5 锁定电脑:测试成功
4.6.2 整体测试
4.6.2.1全部按钮测试
4.6.2.1.1 添加按钮:测试成功
4.6.2.1.2 修改按钮:测试成功
4.6.2.1.3 删除按钮:测试失败
失败原因:当设定时
间只有一个时无法删除
4.6.2.1.4 刷新按钮:测试成功
4.6.2.1.5 退出按钮:测试成功
4.6.2.2 全部勾选项测试
4.6.2.2.6 开机启动:测试成功
4.6.2.2.7 桌面显示时间:测试成

4.6.2.2.8 指针穿透:测试失败
失败原因:当没有勾
选显示时间时,选择指针穿透软件会报错。

4.6.2.2.9 时钟置顶:测试成功
V2.0.4.6.2.1.3
V2.0.4.6.2.2.8
6.评估和建议
6.1对软件的评估
本软件应用在win 9x/2000/XP环境中
本软件为用户提供了日常所需要的提醒功能和时钟的显示功能,切不会占用过多的系统资源在运行达最高频率是内存占用率小于7mb,CPU使用率低于1%
6.2改进建议
本软件应该在对于已设定时间上进行改进,应自动保存用户设定的时间。

相关文档
最新文档