📄 slx.txt
字号:
#include <windows.h>
#include <stdlib.h>
#incldue <string.h>
#include <math.h>
const double pi=3.1415926;
long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam); //消息处理函数
BOOL InitWindowsClass(HINSTANCE hInstance);//初始化窗口类声明
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow);//初始化窗口声明
HWND hWndMain;
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; //定义包含绘图信息的结构体变量
double dfRadious0=100.0,dfRadious1; //外部内部正五边形外接圆半径
PONIT lpOuterPoints[5],lpInnerPoints[5]; //定义外,内正五边形点结构数组
PONIT lpTriangle[3]; //定义三角形点结构数组
dfRadious1=dfRadious0*sin(0.1*pi)/sin(126.0/180*pi);//根据外接圆半径计算内圆半径
/*计算内外正五边形的点的坐标*/
for (int i=0;i<5;i++)
{
lpOuterPoints[i].x= (long)(dfRadious0*cos(i*72.0/180*pi));
lpOuterPoints[i].y= (long)(dfRadious0*sin(i*72.0/180*pi));
lpInnerPoints[i].x= (long)(dfRadious1*cos(i*72.0/180*pi+36.0/180*pi));
lpInnerPoints[i].y= (long)(dfRadious1*sin(i*72.0/180*pi+36.0/180*pi));
}
switch(iMessage)
{
case WM_PAINT: //处理消息函数
hDC=BeginPaint(hWnd,&PtStr); //得到设备环境句柄
SetMapMode(hDC,MM_ANISOTROPIC); //设置映像模式
SetWindowOrgEx(hDC,-100,-100,NULL); //设置坐标原点
hPen =CreatePen(PS_SOLID,1,RGB(255,0,0)); //创建红色画笔
SelectObject(hDC,hPen); //选入画笔
Polygon(hDC,lpOuterPoints,5); //画正五边形
for (i=0;i<5;i++){
lpTriangle[0]=lpOuterPoints[i%5];
lpTriangle[1]=lpInnerPoints[i%5];
lpTriangle[2]=lpOuterPoints[(i+1)%5];
hBrush=CreateSolidBrush(RGB(i*10,i*20,i*30)); //创建新画刷
SelectObject(hDC,hBrush); //选入新画刷
Polygon(hDC,lpTriangle,3); //画三角形区域
lpTriangle[2]=lpInnerPoints[(i+4)%5]; //生成图形中三角形区域的坐标
hBrush=CreateSolidBrush(RGB(i*40,i*30,i*20)); //创建画刷
SelectObject(hDC,hBrush); //选入画刷
Polygon(hDC,lpTriangle,3); //画三角形区域
}
hBrush=CreateSolidBrush(RGB(255,255,255)); //创建白画刷
SelectObject(hDC,hBrush); //选入新画刷
Polygon(hDC,lpTriangle,3); //画三角形区域
Polygon(hDC,lpOuterPoints,5); //画中心的五边形
//用不同的颜色的画笔来绘制五角星
MoveToEx(hDC,lpOuterPoints[0].x,lpOuterPointer[0].y,NULL);
for(i=1;i<=5;i++)
{
hPen=CreatePen(PS_SOLID,1,RGB(0,i*51,0));
SelectObject(hDC,hPen);
LineTo(hDC,lpOuterPoints[(i+2)%5].x,lpOuterPoints[(i+2)%5].y);
}
hPen=(HPEN)(GetStockObject(PS_NULL));
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("Polygon"/*窗口类名*/,"五边形"/*窗口实例标题*/,WS_OVERLAPPEDWINDOW/*窗口风格*/,CW_USEDEFAULT/*窗口左上角坐标*/,0/*窗口左上角坐标*/,CW_USEDEFAULT/*窗口宽度*/,0/*窗口高度*/,NULL/*无父窗口*/,NULL/*无主菜单*/,hInstance/*创建此窗口的应用程序的当前句柄*/,NULL/*指向传递给窗口的参数值的指针*/);
if(!hWnd)//如果窗口创建失败 返回false
return FALSE;
hWndMain=hWnd; //将句柄传递给全局变量
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,IDI_APPLICATION); //窗口的最小化图标为默认图标
WndClass.hInstance=hInstance; //当前实例句柄
WndClass.lpfnWndProc=WndProc; //窗口处理函数
WndClass.lpszClassName="Polygon"; //窗口类名
WndClass.lpszMenuName=NULL; //无菜单
WndClass.style=0;
return RegisterClass(&WndClass); //返回注册窗口的值
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -