MOOC清华《VC++面向对象与可视化程序设计》第2章:Windows绘图-例(1)静态图形的绘制
2017-09-26 08:06
344 查看
#include <windows.h> #include <stdlib.h> #include <string.h> long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam); BOOL InitWindowsClass(HINSTANCE hInstance); BOOL InitWindows(HINSTANCE hInstance,int nCmdShow); //主函数 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,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; //定义指向包含绘图信息的结构体变量 //定义一个POINT数组,包括6个点 POINT points[6]={{100,212},{70,227},{70,250},{130,250},{130,227},{100,212}}; switch(iMessage) //处理消息 {case WM_PAINT: //处理绘图消息 hDC=BeginPaint(hWnd,&PtStr); hPen=(HPEN)GetStockObject(NULL_PEN); //获取系统定义的空画笔 SelectObject(hDC,hPen); //选择画笔 hBrush=(HBRUSH)GetStockObject(BLACK_BRUSH); //获取系统定义的画刷 SelectObject(hDC,hBrush); //选择画刷 LineTo(hDC,50,50); //画线 DeleteObject(hPen); //删除画笔 hPen=CreatePen(PS_SOLID,2,RGB(255,0,0)); //创建画笔 SelectObject(hDC,hPen); //选择画笔 //画一个三角形 LineTo(hDC,150,50); LineTo(hDC,100,137); LineTo(hDC,50,50); Polyline(hDC,points,6); //画一个五边形 Arc(hDC,63,137,138,212,100,137,100,137); //画一个圆 Pie(hDC,213,137,288,212,240,137,260,137); //画一个圆饼 Rectangle(hDC,213,212,287,250); //画一个长方形 RoundRect(hDC,213,100,287,137,20,20); //画一个圆角长方形 DeleteObject(hPen); //删除画笔 DeleteObject(hBrush); //删除画刷 EndPaint(hWnd,&PtStr); //结束绘图 return 0; case WM_DESTROY: //结束应用程序 PostQuitMessage(0); return 0; default://其他消息处理程序 return(DefWindowProc(hWnd,iMessage,wParam,lParam)) ; } } BOOL InitWindows(HINSTANCE hInstance,int nCmdShow) //初始化窗口 { HWND hWnd; hWnd=CreateWindow("WinFill", //生成窗口 "填充示例程序", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL); if(!hWnd) return FALSE; ShowWindow(hWnd,nCmdShow); //显示窗口 UpdateWindow(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,"END"); WndClass.hInstance=hInstance; WndClass.lpfnWndProc=WndProc; WndClass.lpszClassName="WinFill"; WndClass.lpszMenuName=NULL; WndClass.style=CS_HREDRAW|CS_VREDRAW; return RegisterClass(&WndClass); }
相关文章推荐
- MOOC清华《VC++面向对象与可视化程序设计》第2章:Windows绘图-例(3)移动图形的绘制
- MOOC清华《VC++面向对象与可视化程序设计》第2章:Windows绘图-例(4)映像模式的使用(二)
- MOOC清华《VC++面向对象与可视化程序设计》第2章:编程作业-渐变图形的绘制(“万花筒”程序)
- MOOC清华《VC++面向对象与可视化程序设计》第2章:Windows绘图-例(2)映像模式的使用(一)
- Windows 中绘图以及Windows 的图形设备接口(GDI )
- QT二维图形的绘制(类的介绍与绘图实例)
- Windows 8 应用商店应用开发 之 图形绘制(2)
- 关于windows绘图的图形刷新
- MFC绘图[1]--几种绘图方式和几种图形绘制
- Windows 8 应用商店应用开发 之 图形绘制(2)
- 自定义View绘制图形一(绘制静态图形)
- IOS绘图API绘制直线几何图形
- flash 绘图API:绘制秀曲线图形
- 利用Microsoft VC++6.0 的MFC 的绘图工具实现简单图形的绘制
- 【Visual C++】游戏开发笔记之四——游戏画面绘图(一)基本图形绘制
- Windows App开发之编辑文本与绘制图形
- iOS:quartz2D绘图(绘制渐变图形)
- MOOC清华《面向对象程序设计》第2章:auto变量实验
- flash 绘图API:绘制秀曲线图形
- HTML5之Canvas绘图——使用Canvas绘制图形的基本教程