Visual C++面向对象与可视化程序设计实验报告
{ MessageBeep(0) ; return FALSE ; } //---------------- 创建窗口 ------------------- hwnd=CreateWindow ( // _T(\ lpszClassName, //窗口类名 lpszTitle, //窗口实例的标题名
WS_OVERLAPPEDWINDOW, //窗口的风格
CW_USEDEFAULT,
CW_USEDEFAULT, //窗口左上角坐标为缺省值 CW_USEDEFAULT, CW_USEDEFAULT, //窗口的高和宽为缺省值 NULL, //此窗口无父窗口 NULL, //此窗口无主菜单 hInstance, //创建此窗口的应用程序的当前句柄 NULL //不使用该值 ); //--------------- 显示窗口 ---------------------- ShowWindow( hwnd, nCmdShow) ; //-------------- 绘制用户区 --------------------- UpdateWindow(hwnd); //--------------- 消息循环 ---------------------- while( GetMessage(&Msg, NULL, 0, 0)) { TranslateMessage( &Msg) ; DispatchMessage( &Msg) ; } return Msg.wParam; //消息循环结束即程序终止时将信息返回系统 }
//窗口函数
LRESULT CALLBACK WndProc ( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam ) { HDC hDC; //定义指向设备的句柄 HBRUSH hBrush; //定义指向画刷的句柄 HPEN hPen; //定义指向画笔的句柄 PAINTSTRUCT PtStr; //定义指向包含绘图信息的结构变量 POINT points1[3],points2[3],points3[3],points4[3];
9
Visual C++面向对象与可视化程序设计实验报告
points1[0].x=10; points1[0].y=10; points1[1].x=100; points1[1].y=10; points1[2].x=55; points1[2].y=55; points2[0].x=55; points2[0].y=55; points2[1].x=100; points2[1].y=10; points2[2].x=100; points2[2].y=100; points3[0].x=100; points3[0].y=100; points3[1].x=55; points3[1].y=55; points3[2].x=10; points3[2].y=100; points4[0].x=10; points4[0].y=100; points4[1].x=55; points4[1].y=55; points4[2].x=10; points4[2].y=10;
switch(message) { case WM_PAINT: //处理绘图消息 hDC=BeginPaint(hwnd,&PtStr); SetMapMode(hDC,MM_ISOTROPIC); //设置映像模式 SetWindowExtEx(hDC,50,50,NULL); SetViewportExtEx(hDC,100,500,NULL); hBrush=(HBRUSH)CreateSolidBrush(RGB(0,100,100)); SelectObject(hDC,hBrush); Polygon(hDC,points1,3); hBrush=(HBRUSH)CreateSolidBrush(RGB(100,0,100)); SelectObject(hDC,hBrush); Polygon(hDC,points2,3); hBrush=(HBRUSH)CreateSolidBrush(RGB(100,100,100)); SelectObject(hDC,hBrush); Polygon(hDC,points3,3); hBrush=(HBRUSH)CreateSolidBrush(RGB(100,100,0)); SelectObject(hDC,hBrush); Polygon(hDC,points4,3);
10
Visual C++面向对象与可视化程序设计实验报告 hPen=CreatePen(PS_SOLID,2,RGB(0,255,255)); SelectObject(hDC,hPen); MoveToEx(hDC,10,10,NULL); LineTo(hDC,100,10);
hPen=CreatePen(PS_SOLID,2,RGB(0,255,0)); SelectObject(hDC,hPen);
MoveToEx(hDC,100,10,NULL); LineTo(hDC,100,100);
hPen=CreatePen(PS_SOLID,2,RGB(0,0,255)); SelectObject(hDC,hPen);
MoveToEx(hDC,100,100,NULL); LineTo(hDC,10,100);
hPen=CreatePen(PS_SOLID,2,RGB(255,255,0)); SelectObject(hDC,hPen);
MoveToEx(hDC,10,100,NULL); LineTo(hDC,10,10);
hPen=CreatePen(PS_SOLID,2,RGB(255,0,255)); SelectObject(hDC,hPen); MoveToEx(hDC,10,10,NULL); LineTo(hDC,100,100);
hPen=CreatePen(PS_SOLID,2,RGB(255,0,0)); SelectObject(hDC,hPen);
MoveToEx(hDC,100,10,NULL); LineTo(hDC,10,100);
hBrush=(HBRUSH)GetStockObject(DKGRAY_BRUSH); //深灰色刷 SelectObject(hDC,hBrush);
Rectangle(hDC,150,100,200,150); DeleteObject(hBrush); DeleteObject(hPen); EndPaint(hwnd,&PtStr); //结束绘图 return 0;
case WM_DESTROY:
PostQuitMessage(0);
default: //缺省时采用系统消息缺省处理函数 return DefWindowProc(hwnd,message,wParam,lParam); }
return(0);
11
Visual C++面向对象与可视化程序设计实验报告
}
(2) 总结在Windows 程序中绘制图形的基本操作步骤;
(1)分别定义指向设备上下文、画刷、画笔的句柄,定义指向包含绘图信息的结构体变量。
(2)在处理绘图消息的时候首设置好映像模式,编写绘图程序时先选择画笔与画刷。
(3)在编写绘图程序。
(4)绘图程序写完后释放画刷画笔句柄,结束绘图程序。
(3) 总结实验的心得体会,实验中遇到的困难以及解决的方法等。
实验刚开始,对于实验的基本操作不够熟悉。尤其是在对画笔和画刷的初始化上没有足够的认识,导致浪费了一些时间。经过一节课的摸索逐渐的熟悉了画刷和画笔的使用。有了对画笔的使用基础,对于各种绘图函数都能灵活运用。在绘制多边形时,对于其中要求的坐标表示的概念比较模糊,在同学的帮助下才知道需要先定义一个包含坐标的数组,然后在绘制图形时进行引用便行了。
12
相关推荐: