win32 窗口 绘制椭圆
2018-02-09 15:38
513 查看
win32 窗口 绘制椭圆
测试环境: win7 64 位 vs2013
建立一个 win32 应用程序 ,空项目,名称是 HelloPaintEllipse,
在项目中添加源文件 HelloPaintEllipse.cpp :
显示效果如下:
坐标标注:
绘制椭圆是使用的
矩形的对角的两点的坐标,该坐标可以是左上角和右下角,也可以是左下角和右上角
绘制的椭圆是对应矩形的内切椭圆
测试环境: win7 64 位 vs2013
建立一个 win32 应用程序 ,空项目,名称是 HelloPaintEllipse,
在项目中添加源文件 HelloPaintEllipse.cpp :
#include <windows.h> #include <stdlib.h> #include <string.h> #include <tchar.h> LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static TCHAR szAppName[] = TEXT("HelloWin"); HWND hwnd; MSG msg; WNDCLASS wndclass; wndclass.style = CS_HREDRAW | CS_VREDRAW; wndclass.lpfnWndProc = 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 = szAppName; if (!RegisterClass(&wndclass)) { MessageBox(NULL, TEXT("This program requires Windows NT!"), szAppName, MB_ICONERROR); return 0; } hwnd = CreateWindow(szAppName, // window class name TEXT("The Hello Program"), // window caption WS_OVERLAPPEDWINDOW, // window style CW_USEDEFAULT, // initial x position CW_USEDEFAULT, // initial y position CW_USEDEFAULT, // initial x size CW_USEDEFAULT, // initial y size NULL, // parent window handle NULL, // window menu handle hInstance, // program instance handle NULL); // creation parameters ShowWindow(hwnd, iCmdShow); 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; PAINTSTRUCT ps; switch (message) { case WM_CLOSE: DestroyWindow(hwnd); break; case WM_DESTROY: PostQuitMessage(0); break; case WM_PAINT: hdc = BeginPaint(hwnd, &ps); // 1 Rectangle(hdc, 50, 50, 200, 200); // 2 Rectangle(hdc, 300, 50, 500, 200); // 3 Ellipse(hdc, 50, 50, 200, 200); // 4 Ellipse(hdc, 300, 200, 500, 50); // 5 EndPaint(hwnd, &ps); // 6 break; default: return DefWindowProc(hwnd, message, wParam, lParam); } return 0; }
显示效果如下:
坐标标注:
绘制椭圆是使用的
矩形的对角的两点的坐标,该坐标可以是左上角和右下角,也可以是左下角和右上角
绘制的椭圆是对应矩形的内切椭圆
相关文章推荐
- win32 窗口 自定义坐标系 绘制椭圆
- Win32知识之窗口绘制.窗口第一讲
- win32 窗口绘制正弦波
- 在win32 窗口 绘制红色直线
- 重温WIN32 API ------ 窗口上绘制位图文件
- WPF与Win32完成窗口及各个子控件的绘制的对比
- win32 窗口 绘制矩形
- Java基础之在窗口中绘图——绘制圆弧和椭圆(Sketcher 3 drawing arcs and ellipses)
- win32 窗口 绘制红色填充矩形
- <Win32_9>SetWindowRgn函数的应用——绘制个性化形状的窗口
- win32 窗口 自定义坐标系 绘制表盘
- win32 窗口 双缓冲技术 内存DC 绘制直线
- win32 窗口绘制直线
- win32 api 子窗口在父窗口居中的方法
- OGRE3D入门探索01:将渲染窗口嵌入到Win32主窗口
- Win32 OpenGL编程系列 2D例子 -- 七巧板图形绘制
- QT绘制椭圆
- 绘制圆形椭圆
- VC++2005运行Win32控制台程序时,为什么弹不出控制台窗口(无法看到运行结果)?
- 常用的用来绘制图形的win32GDI函数