面现对象与可视化程序设计(黄维通第二版)4-5代码_第1页
面现对象与可视化程序设计(黄维通第二版)4-5代码_第2页
面现对象与可视化程序设计(黄维通第二版)4-5代码_第3页
面现对象与可视化程序设计(黄维通第二版)4-5代码_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、4-5.请编写下列程序。要求如下:(1)定义一只红色画笔,绘制一个等边五边形(2)有不同的颜色的线条链接互不相邻的两个点(3)用不同颜色的画刷填充上述方法所形成图形中的每一个区域#include #include #include #include #define pi 3.1415926535long winapi wndproc(hwnd hwnd,uint imessage,uint wparam,long lparam);/消息处理函数声明.bool initwindowsclass(hinstance hinstance);/初始化窗口类声明bool initwindows(hins

2、tance hinstance, int ncmdshow);/初始化窗口声明.hwnd hwndmain;int winapi winmain(hinstance hinstance, hinstance hprevinstance, lpstr lpcmdline, int ncmdshow)/主函数msg message;if(!initwindowsclass(hinstance)/初始化窗口类.return false;if(!initwindows(hinstance,ncmdshow)/初始化窗口.return false;while(getmessage(&message,0,

3、0,0)translatemessage(&message);/消息循环.dispatchmessage(&message);return message.wparam;long winapi wndproc(hwnd hwnd,uint imessage,uint wparam,long lparam)/消息处理函数.hdc hdc;/定义设备环境句柄.hbrush hbrush;/定义画刷句柄hpen hpen;/定义画笔句柄paintstruct ptstr;/定义包含绘图信息的结构体变量double r1=200.0,r2;/定义外部和内部正五边形外接圆半径.point outr5,i

4、nr5; /定义外,内正五边形点结构数组.point wsjx3,nsjx3; /定义三角形点结构数组.r2=r1*sin(0.1*pi)/sin(0.7*pi);/根据外圆半径计算内园半径./计算内外正五边形的点坐标.for(int i=0;i5;i+)outri.x=(long)r1*cos(i*0.4*pi)+300;outri.y=(long)r1*sin(i*0.4*pi)+300;inri.x=(long)r2*cos(i*0.4*pi+0.2*pi)+300;inri.y=(long)r2*sin(i*0.4*pi+0.2*pi)+300;switch(imessage)case

5、 wm_paint:/处理绘图消息.hdc=beginpaint(hwnd,&ptstr);/得到设备环境句柄setmapmode(hdc,mm_anisotropic);/设置映射模式.hpen=createpen(ps_solid,1,rgb(255,0,0);/创新红色画笔.selectobject(hdc,hpen);/将画笔选入.polygon(hdc,outr,5);/画外正五边形polygon(hdc,inr,5);/画内正五边形/填充正五边形的不同区域.for(i=0;i5;i+)wsjx0=outri%5;/生成图形中的三角形区域的坐标.wsjx1=inri%5;wsjx2=

6、outr(i+1)%5;/创新新画刷.hbrush=createsolidbrush(rgb(i*10,i*20,i*30);selectobject(hdc,hbrush);/选入新画刷.polygon(hdc,wsjx,3);/画三角形区域.nsjx0=outri%5;nsjx1=inri%5;nsjx2=inr(i+4)%5;hbrush=createsolidbrush(rgb(255-i*10,200-i*20,255-i*30);/创新画刷.selectobject(hdc,hbrush);/选入画刷.polygon(hdc,nsjx,3);/画三角形区域.hbrush=creat

7、esolidbrush(rgb(255,255,255);/创新白画刷.selectobject(hdc,hbrush);/选入画刷.polygon(hdc,inr,5);/画中心的五边形./用不同种颜色的画笔来绘制五角星.movetoex(hdc,outr0.x,outr0.y,null);for(i=1;i=5;i+)hpen=createpen(ps_solid,1,rgb(0,i*51,0);selectobject(hdc,hpen);lineto(hdc,outr(i+2)%5.x,outr(i+2)%5.y);deleteobject(hpen);/删除画笔.deleteobje

8、ct(hbrush);/删除画刷.endpaint(hwnd,&ptstr);/结束绘图.return 0;case wm_destroy:/处理关闭窗口信息.postquitmessage(0);/向应用程序发送wm_quit消息.return 0;default:return(defwindowproc(hwnd,imessage,wparam,lparam);bool initwindows(hinstance hinstance, int ncmdshow)/初始化hwnd hwnd;/定义窗口句柄.hwnd=createwindow(polygon,/窗口类名.飞哥五边形,/窗口实例

9、标题.ws_overlappedwindow,/窗口风格.带边框,标题栏,系统菜单和最大和最小按钮.cw_usedefault,/窗口左上角坐标.0,/窗口左上角坐标.cw_usedefault,/窗口宽度0,/窗口高度null,/无父窗口.null,/无主菜单.hinstance,/创建此窗口的应用程序的当前句柄.null);/指向一个传递给窗口的参数值从指针./不使用该值.if(!hwnd)/如果窗口创建失败,返回false.return false;hwndmain=hwnd;/将窗口句柄传递给全局变量.showwindow(hwnd,ncmdshow);/显示窗口.updatewind

10、ow(hwnd);/更新并绘制用户区.return true;bool initwindowsclass(hinstance hinstance)/初始化窗口类.wndclass wndclass;/定义窗口类.wndclass.cbclsextra=0;/窗口类无扩展.wndclass.cbwndextra=0;/窗口实例无扩展.wndclass.hbrbackground=(hbrush)(getstockobject(white_brush);/窗口背景为白色.wndclass.hcursor=loadcursor(null,idc_arrow);/窗口采用箭头光标.wndclass.hicon=loadicon(null,idi_application);/窗口的最小化图标为缺省图标.wndclass.hinstance=hinstance;/当前实例句柄.wndclass.lpf

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论