Windows编程画太极图
用Windows API 画太极图
重要的API函数
Ellipse()
: 画椭圆
API原型
BOOL Ellipse(
HDC hdc,
int xLeft,
int yTop,
int xRight,
int yBottom,
);
Arc()
: 画圆弧
API原型
BOOL Arc(
HDC hdc,
int xLeft,
int yTop,
int xRight,
int yBottom,
int xStart,
int yStart,
int xEnd,
int yEnd,
);
Chord()
: 画圆弧将两个端点并连线
BOOL Chord(
HDC hdc,
int xLeft,
int yTop,
int xRight,
int yBottom,
int xStart,
int yStart,
int xEnd,
int yEnd,
);
代码
#include<windows.h>
#include<math.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)
{static TCHAR szAppName[] = TEXT("MyWindows");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("这个程序需要在Windows NT才能运行!"),szAppName,MB_ICONERROR);return 0;}hwnd = CreateWindow(szAppName,TEXT("太极图"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,600,600,NULL,NULL,hInstance,NULL);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;RECT rect;HBRUSH hBrush;HBRUSH hOldBrush;HPEN hPen;switch(message){case WM_PAINT:hdc = BeginPaint(hwnd,&ps);GetClientRect(hwnd,&rect);hBrush = CreateSolidBrush(RGB(255, 255, 255)); hOldBrush = (HBRUSH)SelectObject(hdc,hBrush); Chord(hdc,100,100,500,500,300,500,300,100); SelectObject(hdc, hOldBrush);DeleteObject(hBrush);//画右边半圆(白色)hBrush = CreateSolidBrush(RGB(0, 0, 0)); hOldBrush = (HBRUSH)SelectObject(hdc,hBrush);Chord(hdc,100,100,500,500,300,100,300,500); SelectObject(hdc, hOldBrush);DeleteObject(hBrush);//画左边半圆(黑色)hBrush = CreateSolidBrush(RGB(0, 0, 0)); hOldBrush = (HBRUSH)SelectObject(hdc,hBrush); Ellipse(hdc,200,100,400,300); SelectObject(hdc, hOldBrush);DeleteObject(hBrush);//画太极图阴块大头hPen = CreatePen(PS_SOLID, 1, RGB(255,255,255));SelectObject(hdc, hPen);hBrush = CreateSolidBrush(RGB(255, 255, 255)); hOldBrush = (HBRUSH)SelectObject(hdc,hBrush);Chord(hdc,200,300,400,500,300,300,300,500); SelectObject(hdc, hOldBrush);DeleteObject(hBrush);//画太极图阳块大头hPen = CreatePen(PS_SOLID, 1, RGB(0,0,0));SelectObject(hdc, hPen);Arc(hdc,200,300,400,500,300,300,300,500);//描边hBrush = CreateSolidBrush(RGB(0, 0, 0)); hOldBrush = (HBRUSH)SelectObject(hdc,hBrush); Ellipse(hdc,270,370,330,430); SelectObject(hdc, hOldBrush);DeleteObject(hBrush);//阴小点hBrush = CreateSolidBrush(RGB(255, 255, 255)); hOldBrush = (HBRUSH)SelectObject(hdc,hBrush); Ellipse(hdc,270,170,330,230); SelectObject(hdc, hOldBrush);DeleteObject(hBrush);//阳小点EndPaint(hwnd,&ps);return 0;case WM_DESTROY:PostQuitMessage(0);return 0;}return DefWindowProc(hwnd,message,wParam,lParam);
}
知识点:
给形状上色
hBrush = CreateSolidBrush(RGB(0, 0, 0)); //设置画刷的RGB颜色值为(0,0,0)---黑色;
hOldBrush = (HBRUSH)SelectObject(hdc,hBrush);
/*画形状,填充的颜色是黑色*/
SelectObject(hdc, hOldBrush);
DeleteObject(hBrush);
改变形状线条颜色
hPen = CreatePen(PS_SOLID, 1, RGB(255,255,255)); //设置画笔的RGB颜色值为(255,255,255)---白色
SelectObject(hdc, hPen);
/*画形状,线条的颜色是白色*/
Windows编程画太极图相关推荐
- windows编程之画五角星
这边我们介绍一下利用windows编程如何来画五角星,下面主要介绍了3种与五角星相关图形的画法: 1.正常的五角星 代码如下: #include<windows.h> #include&l ...
- Windows 编程,画笔画刷以及几何图形的绘制
Windows编程,画笔画刷的介绍 画笔,可以用以下代码新建一个画笔对象: HPEN hpen = CreatePen(PS_SOLID, 1, RGB(255,0,0)); 可以看到,画笔的Crea ...
- windows编程之画刷
windows编程之画刷 文章目录 windows编程之画刷 @[toc] 涉及到的函数 GetStockObject CreateSolidBrush CreateHatchBrush Create ...
- python怎么画简单图片-python中简单易学的绘图:用turtle画太极图
为什么想画太极图呢?因为我儿子不知道是看了哪本书还是哪个电视,竟然特地打印出一张太极图要挂在大门口,我赶紧说祖宗这挂在门外,别人看见了还以为咱家出什么事了,你喜欢就挂自己卧室门口吧,于是这张图就成了他 ...
- 怎么用python画简单的图-python中简单易学的绘图:用turtle画太极图
为什么想画太极图呢?因为我儿子不知道是看了哪本书还是哪个电视,竟然特地打印出一张太极图要挂在大门口,我赶紧说祖宗这挂在门外,别人看见了还以为咱家出什么事了,你喜欢就挂自己卧室门口吧,于是这张图就成了他 ...
- 【Windows编程】系列第三篇:文本字符输出
2019独角兽企业重金招聘Python工程师标准>>> 上一篇我们展示了如何使用Windows SDK创建基本控件,本篇来讨论如何输出文本字符. 在使用Win32编程时,我们常常要输 ...
- 一个物理学家学习Windows编程的感受
最近学习用Visual C++ 作为平台的Windows 编程,感觉到学习这种编程技术的过程与学习物理的思维差异非常大.最明显的,比如对于物理课本,在学习的时候值得一个字一个词的认真去读,有时候需要读 ...
- python画简便的图-python中简单易学的绘图:用turtle画太极图
为什么想画太极图呢?因为我儿子不知道是看了哪本书还是哪个电视,竟然特地打印出一张太极图要挂在大门口,我赶紧说祖宗这挂在门外,别人看见了还以为咱家出什么事了,你喜欢就挂自己卧室门口吧,于是这张图就成了他 ...
- python怎么画简单图-python中简单易学的绘图:用turtle画太极图
为什么想画太极图呢?因为我儿子不知道是看了哪本书还是哪个电视,竟然特地打印出一张太极图要挂在大门口,我赶紧说祖宗这挂在门外,别人看见了还以为咱家出什么事了,你喜欢就挂自己卧室门口吧,于是这张图就成了他 ...
最新文章
- 超干货!一位博士生80篇机器学习相关论文及笔记下载
- oracle /+append/好用吗,ORACLE-insert /*+append*/提高性能
- 取得前九条之后的数据
- eclipse+scala+java+maven 整合实践
- python函数修饰参数_Python 函数参数的填坑之路
- POJ 2886 Who Gets the Most Candies?
- 幻方c语言程序,幻方算法 C语言描述
- 多个路由指向同一个页面_Flutter路由导航
- Delphi控件大全
- 浅析高速公路网络数据集制作
- 如何将docx文件制作为ftl模板
- uniapp 定位服务_uniapp使用高德地图定位
- html5光线传感器,光线传感器是什么 光线传感器分类
- Android程序员二本出身,阿里架构师经验分享
- VS Code 报Windows找不到文件‘chrome‘. 请确定文件名是否正确后,再试一次。八种解决办法
- ZOJ-1005-Jugs
- 2016中国软件行业发展趋势及网络化发展分析【图】
- 管理故事:保罗与小男孩
- Kafka之四:Kafka与Streaming集成
- 小学生python游戏编程arcade----基本知识1
热门文章
- MATLAB resample函数
- response.sendError() 和 response.setStatus()的区别
- 通俗易懂说:snprintf scnprintf
- git push错误failed to push some refs to的解决
- 欧拉折线法解常微分方程C语言,第五章:常微分方程数值解法第一节欧拉法
- 你们要的网页版matlab来了,速领!
- Python不用声明变量吗
- 有监督,无监督,半监督,弱监督、自监督学习
- LSTM时间序列预测MATLAB代码模板(无需调试)
- python3.7安装完成pip无法使用