#include<windows.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#define PI 3.1415926
long WINAPI WndProc(HWND hWnd,
UINT iMessage,
UINT wParam,
LONG lParam);
long i=0,j=0,m=long(100*sin(18*PI/180)/cos(36*PI/180)); //m是中间五边形的半径
int fan=0;
int cishu=0;
POINT a[3],b[3],c[3],d[3],e[3];
POINT a1[3],b1[3],c1[3],d1[3],e1[3];
POINT PIN[5];
double dfTheta=0,dfRange=100.0;
long lCentreX=0,lCentreY=0,lRadious=(long)(0.2*dfRange);
POINT lpSin[100];
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
MSG Message;
HWND hWnd;
WNDCLASS WndClass;
WndClass.cbClsExtra=0;
WndClass.cbWndExtra=0;
WndClass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH));
WndClass.hCursor=LoadCursor(NULL,IDC_CROSS);
WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
WndClass.hInstance=hInstance;
WndClass.lpfnWndProc=WndProc;
WndClass.lpszClassName="WinFill";
WndClass.lpszMenuName=NULL;
WndClass.style=0;
if(!RegisterClass(&WndClass))
{
MessageBeep(0);
return FALSE;
}
hWnd=CreateWindow("WinFill",
"五角星",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
0,
CW_USEDEFAULT,
0,
NULL,
NULL,
hInstance,
NULL);
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
/*for(int j=0;j<100;j++)
{
lpSin[j].x=(long)(j*2*PI/100*60);
lpSin[j].y=(long)(dfRange*sin(j*2*PI/100));
}*/
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;
switch(iMessage)
{
case WM_PAINT:
hDC=BeginPaint(hWnd,&PtStr);
SetWindowOrgEx(hDC,-200,-200,NULL);
SetMapMode(hDC,MM_ANISOTROPIC);
hPen=CreatePen(PS_SOLID,1,RGB(255,0,0));
SelectObject(hDC,hPen);
//Polyline(hDC,lpSin,100);
//第一个外三角形
a[0].x=lCentreX; a[0].y=lCentreY-100;
a[1].x=long(lCentreX-100*sin(72*PI/180)); a[1].y=long(lCentreY-100*cos(72*PI/180));
a[2].x=long(lCentreX-m*sin(36*PI/180)); a[2].y=long(lCentreY-m*cos(36*PI/180));
hBrush=CreateSolidBrush(RGB(fan,100,0));
SelectObject(hDC,hBrush); Polygon(hDC,a,3);
//第二个外三角形
b[0].x=lCentreX; b[0].y=lCentreY-100;
b[1].x=long(lCentreX+m*sin(36*PI/180)); b[1].y=long(lCentreY-m*cos(36*PI/180));
b[2].x=long(lCentreX+100*sin(72*PI/180)); b[2].y=long(lCentreY-100*cos(72*PI/180));
hBrush=CreateSolidBrush(RGB(100,fan,0));
SelectObject(hDC,hBrush);
Polygon(hDC,b,3);
//第三个外三角形
c[0].x=long(lCentreX+100*sin(72*PI/180)); c[0].y=long(lCentreY-100*cos(72*PI/180));
c[1].x=long(lCentreX+100*sin(36*PI/180)); c[1].y=long(lCentreY+100*cos(36*PI/180));
c[2].x=long(lCentreX+m*sin(72*PI/180)); c[2].y=long(lCentreY+m*cos(72*PI/180));
hBrush=CreateSolidBrush(RGB(100,255,fan));
SelectObject(hDC,hBrush);
Polygon(hDC,c,3);
//第四个外三角形
d[0].x=long(lCentreX-100*sin(36*PI/180)); d[0].y=long(lCentreY+100*cos(36*PI/180));
d[1].x=long(lCentreX+100*sin(36*PI/180)); d[1].y=long(lCentreY+100*cos(36*PI/180));
d[2].x=lCentreX; d[2].y=lCentreY+m;
hBrush=CreateSolidBrush(RGB(100,fan/3,0));
SelectObject(hDC,hBrush);
Polygon(hDC,d,3);
//第五个外三角形
e[0].x=long(lCentreX-100*sin(36*PI/180)); e[0].y=long(lCentreY+100*cos(36*PI/180));
e[1].x=long(lCentreX-100*sin(72*PI/180)); e[1].y=long(lCentreY-100*cos(72*PI/180));
e[2].x=long(lCentreX-m*sin(72*PI/180)); e[2].y=long(lCentreY+m*cos(72*PI/180));
hBrush=CreateSolidBrush(RGB(100,fan,fan));
SelectObject(hDC,hBrush);
Polygon(hDC,e,3);
//第一个内三角形
a1[0].x=long(lCentreX-m*sin(36*PI/180)); a1[0].y=long(lCentreY-m*cos(36*PI/180));
a1[1].x=lCentreX; a1[1].y=lCentreY-100;
a1[2].x=long(lCentreX+m*sin(36*PI/180)); a1[2].y=long(lCentreY-m*cos(36*PI/180));
hBrush=CreateSolidBrush(RGB(100,0,fan));
SelectObject(hDC,hBrush);
Polygon(hDC,a1,3);
//第二个内三角形
b1[0].x=long(lCentreX+m*sin(36*PI/180)); b1[0].y=long(lCentreY-m*cos(36*PI/180));
b1[1].x=long(lCentreX+100*sin(72*PI/180)); b1[1].y=long(lCentreY-100*cos(72*PI/180));
b1[2].x=long(lCentreX+m*sin(72*PI/180)); b1[2].y=long(lCentreY+m*cos(72*PI/180));
hBrush=CreateSolidBrush(RGB(0,fan,80));
SelectObject(hDC,hBrush);
Polygon(hDC,b1,3);
//第三个内三角形
c1[0].x=long(lCentreX+m*sin(72*PI/180)); c1[0].y=long(lCentreY+m*cos(72*PI/180));
c1[1].x=long(lCentreX+100*sin(36*PI/180)); c1[1].y=long(lCentreY+100*cos(36*PI/180));
c1[2].x=lCentreX; c1[2].y=lCentreY+m;
hBrush=CreateSolidBrush(RGB(0,fan/3,76));
SelectObject(hDC,hBrush);
Polygon(hDC,c1,3);
//第四个内三角形
d1[0].x=lCentreX; d1[0].y=lCentreY+m;
d1[1].x=long(lCentreX-100*sin(36*PI/180)); d1[1].y=long(lCentreY+100*cos(36*PI/180));
d1[2].x=long(lCentreX-m*sin(72*PI/180)); d1[2].y=long(lCentreY+m*cos(72*PI/180));
hBrush=CreateSolidBrush(RGB(0,100,fan/5));
SelectObject(hDC,hBrush);
Polygon(hDC,d1,3);
//第五个内三角形
e1[0].x=long(lCentreX-m*sin(72*PI/180)); e1[0].y=long(lCentreY+m*cos(72*PI/180));
e1[1].x=long(lCentreX-100*sin(72*PI/180)); e1[1].y=long(lCentreY-100*cos(72*PI/180));
e1[2].x=long(lCentreX-m*sin(36*PI/180)); e1[2].y=long(lCentreY-m*cos(36*PI/180));
hBrush=CreateSolidBrush(RGB(fan/3,fan/2,0));
SelectObject(hDC,hBrush);
Polygon(hDC,e1,3);
PIN[0].x=lCentreX; PIN[0].y=lCentreY+m;
PIN[1].x=long(lCentreX-m*sin(72*PI/180)); PIN[1].y=long(lCentreY+m*cos(72*PI/180));
PIN[2].x=long(lCentreX-m*sin(36*PI/180)); PIN[2].y=long(lCentreY-m*cos(36*PI/180));
PIN[3].x=long(lCentreX+m*sin(36*PI/180)); PIN[3].y=long(lCentreY-m*cos(36*PI/180));
PIN[4].x=long(lCentreX+m*sin(72*PI/180)); PIN[4].y=long(lCentreY+m*cos(72*PI/180));
hBrush=CreateSolidBrush(RGB(fan,fan/2,fan));
SelectObject(hDC,hBrush); Polygon(hDC,PIN,5);
fan+=8;
fan%=255;
cishu++;
DeleteObject(hPen);
DeleteObject(hBrush);
EndPaint(hWnd,&PtStr);
Sleep(10);
InvalidateRect(hWnd,NULL,1);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
}