#include <windows.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define PI 3.14159
long n=0;
#define R 200
long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParm);
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;
int i;
double b;
double r;
double p;
PAINTSTRUCT PtStr;
switch(iMessage)
{
case WM_PAINT:
hDC=BeginPaint(hWnd,&PtStr);
SetMapMode(hDC,MM_ANISOTROPIC);
SetWindowOrgEx(hDC,-500,-300,NULL);
POINT a[11];
POINT d[5];
a[0].x=R;
a[0].y=0;
POINT c[3];
POINT temp[5];
POINT tempR[5];
b=((double)R*sin(PI/10))/sin(126*PI/180);
r=((double)b*sin(PI/10))/sin(126*PI/180);
temp[0].x=r;
temp[0].y=0;
tempR[0].x=R;
tempR[0].y=0;
for(i=1;i<10;i++)
{
if(i%2==0)
{
a[i].x=R*cos(i*36*PI/180);
a[i].y=R*sin(i*36*PI/180);
temp[i/2].x=r*cos(i*36*PI/180);
temp[i/2].y=r*sin(i*36*PI/180);
tempR[i/2].x=R*cos(i*36*PI/180);
tempR[i/2].y=R*sin(i*36*PI/180);
}
else
{
a[i].x=b*cos(i*36*PI/180);
a[i].y=b*sin(i*36*PI/180);
d[(i-1)/2].x=b*cos(i*36*PI/180);
d[(i-1)/2].y=b*sin(i*36*PI/180);
}
}
for(i=0;i<5;i++)
{
if((int)(n/(R-r))%2==0)
p=R-n%(int)(R-r+1);
else
p=r+n%(int)(R-r+1);
a[i*2].x=p*cos(i*72*PI/180);
a[i*2].y=p*sin(i*72*PI/180);
}
Polyline(hDC,a,10);
hBrush=(HBRUSH)CreateSolidBrush(RGB(250,0,0));
SelectObject(hDC,hBrush);
Polygon(hDC,d,5);
DeleteObject(hBrush);
for(i=0;i<10;i++)
{
c[0].x=a[(i+10-1)%10].x;
c[0].y=a[(i+10-1)%10].y;
c[1].x=a[i].x;
c[1].y=a[i].y;
c[2].x=a[(i+10+1)%10].x;
c[2].y=a[(i+10+1)%10].y;
if(i==0)
{
hBrush=(HBRUSH)CreateSolidBrush(RGB(150,100,200));
hPen=CreatePen(PS_SOLID,2,RGB(255,255,0));
}
else if((i+n)%3==1)
{
hBrush=(HBRUSH)CreateSolidBrush(RGB(50+i*15,0,0));
hPen=CreatePen(PS_SOLID,2,RGB(255,0,255));
}
else if((i+n)%3==0)
{
hBrush=(HBRUSH)CreateSolidBrush(RGB(0,50+i*15,0));
hPen=CreatePen(PS_SOLID,2,RGB(0,255,255));
}
else
{
hBrush=(HBRUSH)CreateSolidBrush(RGB(0,0,50+i*15));
hPen=CreatePen(PS_SOLID,2,RGB(255,255,0));
}
SelectObject(hDC,hBrush);
SelectObject(hDC,hPen);
Polygon(hDC,c,3);
}
n++;
DeleteObject(hPen);
DeleteObject(hBrush);
EndPaint(hWnd,&PtStr);
if((n%(int)(R-r+1)==0))
Sleep(1000);
Sleep(100);
if(i<1000)
InvalidateRect(hWnd,NULL,1);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
}
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=LoadCursor(NULL,"END");
WndClass.hInstance=hInstance;
WndClass.lpfnWndProc=WndProc;
WndClass.lpszClassName="WinFill";
WndClass.lpszMenuName=NULL;
WndClass.style=CS_HREDRAW|CS_VREDRAW;
return RegisterClass(&WndClass);
}
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;
}
vc++ Windows编程实现五角星
4星 · 超过85%的资源 需积分: 33 98 浏览量
2009-10-18
19:07:55
上传
评论 1
收藏 1.13MB RAR 举报
huiqiang1609
- 粉丝: 4
- 资源: 47
最新资源
- 126641091882064LSPatch.apk
- 5G网络基础培训课件.zip
- 2024-spring-HIT-CS-大作业
- yolo目标检测项目实验
- downloadFile-1.hc
- C++课程设计:基于Qt的航班信息管理系统
- ADS7822UVerilog驱动,前面传的有点问题
- 基于python的高性能爬虫程序,使用了多线程+缓存+xpath实现的,这里以彼-岸图库为例,实现,仅用于学习交流
- 中分辨率成像光谱仪(MODIS)烧毁面积产品信息MODIS-C6-BA-User-Guide-1.2.pdf
- Screenshot_20240427_172613_com.huawei.browser.jpg
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈