收藏 分享(赏)

可视化1.doc

上传人:weiwoduzun 文档编号:5645952 上传时间:2019-03-10 格式:DOC 页数:4 大小:44.50KB
下载 相关 举报
可视化1.doc_第1页
第1页 / 共4页
可视化1.doc_第2页
第2页 / 共4页
可视化1.doc_第3页
第3页 / 共4页
可视化1.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、南京信息工程大学 实验(实习)报告实验(实习)名称 图形程序设计及其应用 实验(实习)日期一、实验目的1熟悉图形设备接口的概念及其应用。二、实验内容及步骤实验任务1.熟悉基于图形应用的程序设计;2.掌握刷新技术及其应用;3.掌握映射模式的应用;4.掌握绘图工具的使用。实验内容编写一个程序,在屏幕上出现一个圆心沿正弦曲线轨迹移动的实心圆,且每隔四分之一周期,圆的填充色和圆的周边颜色都发生变化,同时圆的半径在四分之一周期之内由正弦曲线幅值的 0.2 倍至 0.6 倍线性增长。程序代码: #include#include#include#include#define Pi 3.1415926long

2、 WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam);double dfTheta=0,dfRange=100.0;long i=0,j=0;long lCentreX=0,lCentreY=0,lRadious=(long)(0.2*dfRange);POINT lpSin100;int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPSTR lpszCmdLine,int nCmdShow)HWND hwnd ;MSG Message ;WNDCLA

3、SS wndclass ;wndclass.cbClsExtra=0; /窗口类无扩展wndclass.cbWndExtra=0; /窗口实例无扩展wndclass.hInstance=hInstance; /当前实例句柄wndclass.hCursor=LoadCursor(NULL,IDC_ARROW) ; /窗口采用箭头光标wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); /窗口背景为白色wndclass.lpszMenuName=NULL; /窗口中无菜单wndclass.lpszClassName=“SIN“ ;

4、/窗口类名为“窗口“wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION); /窗口的最小化图标为缺省图标wndclass.lpfnWndProc=WndProc; /定义窗口处理函数wndclass.style=0;if(!RegisterClass( return FALSE ;/- 创建窗口 -hwnd=CreateWindow(“SIN“, /窗口类名“4_6“, /窗口实例的标题名WS_OVERLAPPEDWINDOW, /窗口的风格CW_USEDEFAULT,0, /窗口左上角坐标为缺省值CW_USEDEFAULT,0, /窗口的高和宽为缺省值N

5、ULL, /此窗口无父窗口NULL, /此窗口无主菜单hInstance, /创建此窗口的应用程序的当前句柄NULL /不使用该值);/- 显示窗口 -ShowWindow( hwnd, nCmdShow) ;/- 绘制用户区 -UpdateWindow(hwnd);/- 消息循环 - for(int j=0;j100;j+) /生成正弦曲线的点坐标lpSinj.x=(long)(j*2*Pi/100*60);lpSinj.y=(long)(dfRange*sin(j*2*Pi/100);while( GetMessage(DispatchMessage( return Message.wPa

6、ram; /消息循环结束即程序终止时将信息返回系统long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam)HDC hDC; /定义指向设备的句柄HBRUSH hBrush; /定义指向画刷的句柄HPEN hPen; /定义指向画笔的句柄PAINTSTRUCT PtStr;/定义指向包含绘图信息的结构体变量switch(iMessage) /处理消息case WM_PAINT: /处理绘图消息hDC=BeginPaint(hWnd,SetWindowOrgEx(hDC,-200,-200,NULL); /设置映像模式

7、hPen=CreatePen(PS_DASH,1,RGB(255,0,0); /黑色画笔SelectObject(hDC,hPen); /选择画笔Polyline(hDC,lpSin,100);if(i=25) /第一个 1/4 周期hPen=CreatePen(PS_DASH,1,RGB(255,0,0);hBrush=CreateHatchBrush(HS_BDIAGONAL,RGB(255,0,0);lRadious=(long)(dfRange*0.2+i%25*dfRange*0.4/25);/计算半径else if(i=50)hPen=CreatePen(PS_DASH,1,RGB

8、(0,255,0);hBrush=CreateHatchBrush(HS_BDIAGONAL,RGB(0,255,0);lRadious=(long)(dfRange*0.2+i%25*dfRange*0.4/25);/计算半径else if(i=75)hPen=CreatePen(PS_DASH,1,RGB(0,0,255);hBrush=CreateHatchBrush(HS_BDIAGONAL,RGB(0,0,255);lRadious=(long)(dfRange*0.2+i%25*dfRange*0.4/25);/计算半径elsehPen=CreatePen(PS_DASH,1,RG

9、B(255,255,0);hBrush=CreateHatchBrush(HS_BDIAGONAL,RGB(255,255,0);lRadious=(long)(dfRange*0.2+i%25*dfRange*0.4/25);/计算半径SelectObject(hDC,hBrush); /选择画刷SelectObject(hDC,hPen); lCentreX=lpSini.x; /圆心 x 坐标lCentreY=lpSini.y; /圆心 y 坐标Ellipse(hDC,lCentreX-lRadious,lCentreY-lRadious,lCentreX+lRadious,lCentr

10、eY+lRadious); /画圆i+;DeleteObject(hPen); /删除画笔DeleteObject(hBrush); /删除画刷EndPaint(hWnd, /删除设备环境指针Sleep(100); /停 0.1 秒if(i100) InvalidateRect(hWnd,NULL,1); /刷新用户区return 0;case WM_DESTROY: /关闭窗口PostQuitMessage(0);return 0;default:return(DefWindowProc(hWnd,iMessage,wParam,lParam); 程序运行结果:三、实验结果通过本次试验我了解了基于图形应用的程序设计,掌握刷新技术及其应用;学会了映射模式的应用;并且基本了解了绘图工具的使用;进一步加深了对可视化的了解。

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

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报