Visual C++面向对象与可视化程序设计报告风车.docx

上传人:b****3 文档编号:2172129 上传时间:2022-10-27 格式:DOCX 页数:10 大小:135.03KB
下载 相关 举报
Visual C++面向对象与可视化程序设计报告风车.docx_第1页
第1页 / 共10页
Visual C++面向对象与可视化程序设计报告风车.docx_第2页
第2页 / 共10页
Visual C++面向对象与可视化程序设计报告风车.docx_第3页
第3页 / 共10页
Visual C++面向对象与可视化程序设计报告风车.docx_第4页
第4页 / 共10页
Visual C++面向对象与可视化程序设计报告风车.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

Visual C++面向对象与可视化程序设计报告风车.docx

《Visual C++面向对象与可视化程序设计报告风车.docx》由会员分享,可在线阅读,更多相关《Visual C++面向对象与可视化程序设计报告风车.docx(10页珍藏版)》请在冰豆网上搜索。

Visual C++面向对象与可视化程序设计报告风车.docx

VisualC++面向对象与可视化程序设计报告风车

 

VisualC++面向对象

与可视化程序设计

设计报告

 

题目名称旋转的风车

班级093班

          姓名赵贵义

         

          学号200928159

 

  

  

  

  

  

  

 

利用VC++设计旋转的风车

一要求与分析

  在窗口中画一个旋转的风车风车中有三个叶片颜色分别为红、黄和蓝叶片外侧有

一个外接圆。

要求在程序中能够控制叶片的运转与停止当开始运转时速度由0逐渐变到

最高速度当停止时由最高速度逐渐变为0。

本课题对软硬件平台要求不高操作系统可

选择Windows2000/WindowXP。

在VisualC++6.0下控件来实现。

二MFC介绍

MFC(MicrosoftFoundationClass)是用来编写Windows应用程序的C++类集,其中封

装了大部分WindowsAPI函数和Windows控件,使用MFC类库和VisualC++提供的应用

程序开发工具,可使应用程序开发变得简单,提高代码的可靠性和可重用性

三界面设计界面应满足以下要求

1界面首先要出现一个风车。

2风车叶片要分红蓝绿三种颜色,外侧有一个外接圆。

3在程序中能够控制叶片的运转与停止,当开始运转时,速度由0逐渐变到最高速度;当停止时由最高速度逐渐变为0。

4根据以上描述程序运行时效果如图所示。

运行结果

 

四系统实现

源程序

//Instance_3_1_.cpp:

Definestheentrypointfortheapplication.

//

/*************************************************************************

在窗口中画一个旋转的风车风车中有三个叶片颜色分别为红黄和蓝

叶片外侧有一个外接圆。

*************************************************************************/

#include

#include//回调函数声明

LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAM

lParam);//初始化窗口类声明

BOOLInitWindowsClass(HINSTANCEhInstance,char*lpszClassName);

//初始化窗口声明

BOOLInitWindows(HINSTANCEhInstance,intnCmdShow,char*lpszClassName,

char*lpTitle);

WNDCLASSwndclass;//定义一个窗口类

HWNDhwnd;//定义一个窗口句柄

constdoublePi=3.1415926;

intnMaxNumber=20;//叶片循环一周中绘图的次数

intnNum=0;//记录当前的顺序

doubletime0=81;

boolflag=0;

 

intWINAPIWinMain(HINSTANCEhInstance,

HINSTANCEhPrevInstance,

LPSTRlpCmdLine,

intnCmdShow)

{

MSGMsg;//定义消息charlpszClassName[]="风车";//窗口的类名

charlpTitle[]="基本绘图-旋转的风车";//窗口标题名

 

//初始化窗口类

if(!

InitWindowsClass(hInstance,lpszClassName))

{

returnFALSE;

}

//初始化窗口

if(!

InitWindows(hInstance,nCmdShow,lpszClassName,lpTitle))

{

returnFALSE;

}

 

//消息循环

while(GetMessage(&Msg,NULL,0,0))

{

TranslateMessage(&Msg);

DispatchMessage(&Msg);

}

returnMsg.wParam;//程序终止时将信息返回系统

}

 

//初始化窗口类定义

BOOLInitWindowsClass(HINSTANCEhInstance,char*lpszClassName)

{

//1、窗口类定义

wndclass.style=0;//窗口类型为默认类型

wndclass.lpfnWndProc=WndProc;//窗口处理函数为WNDPROC

wndclass.cbClsExtra=0;//窗口类无扩展

wndclass.cbWndExtra=0;//窗口实例无扩展

wndclass.hInstance=hInstance;//当前实例句柄

wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);//窗口的最小化图标

为默认图标

wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);//窗口采用箭头光标

wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//窗口

采用白色背景

wndclass.lpszMenuName=NULL;//窗口中无菜单

wndclass.lpszClassName=lpszClassName;//类名为lpClassName

//2、注册窗口类

if(!

RegisterClass(&wndclass))

{//如果注册失败则发出警告声音

MessageBeep(0);

returnFALSE;

}

returnTRUE;

}

 

//初始化窗口声明

BOOLInitWindows(HINSTANCEhInstance,intnCmdShow,char*lpszClassName,

char*lpTitle)

{

//3、创建窗口

hwnd=CreateWindow(

lpszClassName,

lpTitle,

WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT,

0,600,450,NULL,NULL,

hInstance,

NULL

);

//4、显示窗口

ShowWindow(hwnd,nCmdShow);

UpdateWindow(hwnd);

returnTRUE;

}

 

//回调函数定义

LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAM

lParam)

{

HDChDC;//定义设备环境句柄

HPENhPen;//定义画笔句柄

HBRUSHhBrush;//定义画刷句柄

PAINTSTRUCTPtStr;//定义包含绘制信息的结构体变量

POINTpCenterPoint;//定义一个圆尽心点的坐标

intnRadious=50;//定义圆的半径

doublefAngle;//叶片的直边与水平轴的夹角

 

switch(message)

{

caseWM_PAINT:

{//处理绘图消息

hDC=BeginPaint(hwnd,&PtStr);//得到设备句柄

SetMapMode(hDC,MM_ANISOTROPIC);//设置映像模式

SetWindowExtEx(hDC,400,300,NULL);//设置窗口区域逻辑单位

SetViewportExtEx(hDC,600,450,NULL);//设置视口区域物理单位

SetViewportOrgEx(hDC,300,200,NULL);//设置视口原点坐标为300200

 

//绘制外圆

hPen=(HPEN)GetStockObject(BLACK_PEN);

SelectObject(hDC,hPen);

Ellipse(hDC,-100,-100,100,100);

//绘制风车的叶片

//1、画红色叶片

hBrush=CreateSolidBrush(RGB(255,0,0));

SelectObject(hDC,hBrush);

fAngle=2*Pi/nMaxNumber*nNum;

pCenterPoint.x=(int)(nRadious*cos(fAngle));

pCenterPoint.y=(int)(nRadious*sin(fAngle));

Pie(

hDC,

pCenterPoint.x-nRadious,pCenterPoint.y-nRadious,

pCenterPoint.x+nRadious,pCenterPoint.y+nRadious,

(int)(pCenterPoint.x+nRadious*cos(fAngle)),

(int)(pCenterPoint.y+nRadious*sin(fAngle)),

(int)(pCenterPoint.x+nRadious*cos(fAngle+Pi)),

(int)(pCenterPoint.y+nRadious*sin(fAngle+Pi))

);

 

//2、画天蓝色叶片

hBrush=CreateSolidBrush(RGB(255,255,0));

SelectObject(hDC,hBrush);pCenterPoint.x=(int)(nRadious*cos(fAngle+2*Pi/3));

pCenterPoint.y=(int)(nRadious*sin(fAngle+2*Pi/3));

Pie(

hDC,

pCenterPoint.x-nRadious,pCenterPoint.y-nRadious,

pCenterPoint.x+nRadious,pCenterPoint.y+nRadious,

(int)(pCenterPoint.x+nRadious*cos(fAngle+2*Pi/3)),

(int)(pCenterPoint.y+nRadious*sin(fAngle+2*Pi/3)),

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

当前位置:首页 > 小学教育 > 数学

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

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