double dfTheta=0,dfRange=100.0;
long i=0,j=0;
long lCentreX=0,lCentreY=0,lRadious=(long)(0.2*dfRange);
POINT lpSin[100];
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));
}
HDC hDC; //定义指向设备的句柄
HBRUSH hBrush; //定义指向画刷的句柄
HPEN hPen; //定义指向画笔的句柄
PAINTSTRUCT PtStr;//定义指向包含绘图信息的结构体变量
switch(iMessage) //处理消息
{
case WM_PAINT: //处理绘图消息
hDC=BeginPaint(hWnd,&PtStr);
SetWindowOrgEx(hDC,-200,-200,NULL); //设置映像模式
hPen=CreatePen(PS_DASH,1,RGB(255,0,0)); //黑色画笔
SelectObject(hDC,hPen); //选择画笔
Polyline(hDC,lpSin,100);
if(i<=25) //第一个1/4周期
{
hPen=CreatePen(PS_DASH,1,RGB(255,0,0));
hBrush=CreateHatchBrush(HS_BDIAGONAL,RGB(255,0,0));
lRadious=(long)(dfRange*0.2+i%25*dfRange*0.4/25);//计算半径
}
else if(i<=50)
{
hPen=CreatePen(PS_DASH,1,RGB(0,255,0));
hBrush=CreateHatchBrush(HS_BDIAGONAL,RGB(0,255,0));
lRadious=(long)(dfRange*0.2+i%25*dfRange*0.4/25);//计算半径
}
else if(i<=75)
{
hPen=CreatePen(PS_DASH,1,RGB(0,0,255));
hBrush=CreateHatchBrush(HS_BDIAGONAL,RGB(0,0,255));
lRadious=(long)(dfRange*0.2+i%25*dfRange*0.4/25);//计算半径
}
else
{
hPen=CreatePen(PS_DASH,1,RGB(255,255,0));
hBrush=CreateHatchBrush(HS_BDIAGONAL,RGB(255,255,0));
lRadious=(long)(dfRange*0.2+i%25*dfRange*0.4/25);//计算半径
}
/*SelectObject(hDC,hBrush);
SelectObject(hDC,hPen);
lCentreX=lpSin[i].x;
lCentreY=lpSin[i].Y;
Ellipse(hDC,lCentreX-lRadious,lCentreY-lRadious,
lCentreX-lRadious,lCentreY-lRadious);
I++;
DeleteObject(hPen);
DeleteObject(hBrush);
EndPaint(hWnd,&PtStr);
Sleep(100);
if(i<100) InvalidateRect(hWnd,NUll,1)l
return 0;
*/
SelectObject(hDC,hBrush); //选择画刷
SelectObject(hDC,hPen);
lCentreX=lpSin[i].x; //圆心x坐标
lCentreY=lpSin[i].y; //圆心y坐标
Ellipse(hDC,lCentreX-lRadious,lCentreY-lRadious,
lCentreX+lRadious,lCentreY+lRadious); //画圆
i++;
DeleteObject(hPen); //删除画笔
DeleteObject(hBrush); //删除画刷
EndPaint(hWnd,&PtStr); //删除设备环境指针
Sleep(100); //停0.1秒
if(i<100) InvalidateRect(hWnd,NULL,1); //刷新用户区
return 0;
case WM_DESTROY: //关闭窗口
PostQuitMessage(0);
return 0;
default:
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
}
int iFontFlag=0;
//主函数
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
MSG Message;
if (!InitWindowClass(hInstance, nCmdShow))
{
MessageBox(NULL, _T("创建窗口失败!"), _T("创建窗口"), NULL);
return 1;
}
while (GetMessage(&Message, 0, 0, 0))//消息循环
{
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return (int)Message.wParam;
}
//消息处理函数
long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam)
{
HDC hDC;
HFONT hF;
PAINTSTRUCT ps;
TEXTMETRIC tm;
char lpsz_1[]="欲穷千里目 更上一层楼";
char chFont[7];
int X=0,Y=0;
int nCharlen=strlen(lpsz_1);
switch(iMessage)
{
case WM_CREATE:
SetTimer(hWnd,1,200,NULL);
break;
case WM_PAINT:
hDC=BeginPaint(hWnd,&ps);
if(iFontFlag/nCharlen==0)
{
SetTextColor(hDC,RGB(255,0,0));
strcpy_s(chFont,"宋体");
}else if(iFontFlag/nCharlen==1)
{
SetTextColor(hDC,RGB(255,255,0));
strcpy_s(chFont,"楷体_");
}else if(iFontFlag/nCharlen==2)
{
SetTextColor(hDC,RGB(0,0,255));
strcpy_s(chFont,"仿宋体");
}
else if(iFontFlag/nCharlen==3)
{
SetTextColor(hDC,RGB(0,255,0));
strcpy_s(chFont,"黑体");
}else {
iFontFlag=0;
SetTextColor(hDC,RGB(255,0,0));
}
hF=CreateFont(
40,
0,
0,
0,
400,
0,
0,
0,
GB2312_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS, //默认裁剪精度
DEFAULT_QUALITY, //默认输出质量
DEFAULT_PITCH| FF_DONTCARE, //默认间距
chFont);
SelectObject(hDC,hF);
GetTextMetrics(hDC,&tm);
TextOut(hDC,X,Y,&lpsz_1[iFontFlag%nCharlen],nCharlen-iFontFlag&nCharlen);
iFontFlag+=2;
DeleteObject(hF);
EndPaint(hWnd,&ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
KillTimer(hWnd,1);
return 0;
case WM_TIMER:
InvalidateRect(hWnd,NULL,1);
break;
default:
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
return 0;
}
int nNum = 0, nMaxNum = 20;
long WINAPI WndProc(HWND hWnd, UINT iMessage, UINT wParam, LONG lParam) {
HDC hDC; //定义设备环境句柄.
HBRUSH hBrush; //定义画刷句柄
HPEN hPen; //定义画笔句柄
PAINTSTRUCT PtStr; //定义包含绘图信息的结构体变量
int nCentreX, nCentreY; //定义3个叶片的圆心的坐标.
double Angle;
switch(iMessage) {
case WM_CREATE:
SetTimer(hWnd, 9999, 100, NULL);
return 0;
case WM_TIMER:
InvalidateRect(hWnd, NULL, 1); //重绘窗口区域.
return 0;
case WM_PAINT: //处理绘图消息.
hDC = BeginPaint(hWnd, &PtStr); //获得设备环境指针.
SetViewportOrgEx(hDC, 300, 200, NULL);
//绘制外圆
hPen = (HPEN)GetStockObject(BLACK_PEN);
SelectObject(hDC, hPen);
Ellipse(hDC, -100, -100, 100, 100);
//绘制风车的叶片
hBrush = CreateSolidBrush(RGB(255, 0, 0)); //画红色的叶片.
SelectObject(hDC, hBrush);
Angle = 2 * Pi / nMaxNum * nNum;
nCentreX = (int)(50 * cos(fAngle));
nCentreY = (int)(50 * sin(fAngle));
Pie(hDC, nCentreX - 50, nCentreY - 50,
nCentreX + 50, nCentreY + 50,
(int)(nCentreX + 50 * cos(fAngle)), (int)(nCentreY + 50 * sin(fAngle)),
(int)(nCentreX + 50 * cos(fAngle + Pi)), (int)(nCentreY + 50 * sin(fAngle + Pi)));
hBrush = CreateSolidBrush(RGB(255, 255, 0)); //画天蓝色的叶片.
SelectObject(hDC, hBrush);
nCentreX = (int)(50 * cos(fAngle + 2 * Pi / 3));
nCentreY = (int)(50 * sin(fAngle + 2 * Pi / 3));
Pie(hDC, nCentreX - 50, nCentreY - 50,
nCentreX + 50, nCentreY + 50,
(int)(nCentreX + 50 * cos(fAngle + 2 * Pi / 3)), (int)(nCentreY + 50 * sin(fAngle + 2 * Pi / 3)),
(int)(nCentreX + 50 * cos(fAngle + Pi + 2 * Pi / 3)), (int)(nCentreY + 50 * sin(fAngle + Pi + 2 * Pi / 3)));
hBrush = CreateSolidBrush(RGB(0, 255, 255)); //画黄色的叶片.
SelectObject(hDC, hBrush);
nCentreX = (int)(50 * cos(fAngle + 4 * Pi / 3));
nCentreY = (int)(50 * sin(fAngle + 4 * Pi / 3));
Pie(hDC, nCentreX - 50, nCentreY - 50,
nCentreX + 50, nCentreY + 50,
(int)(nCentreX + 50 * cos(fAngle + 4 * Pi / 3)), (int)(nCentreY + 50 * sin(fAngle + 4 * Pi / 3)),
(int)(nCentreX + 50 * cos(fAngle + Pi + 4 * Pi / 3)), (int)(nCentreY + 50 * sin(fAngle + Pi + 4 * Pi / 3)));
nNum++; //当前序数加1.
Sleep(100); //等待0.1秒.
InvalidateRect(hWnd, NULL, 1); //重绘窗口区域.
EndPaint(hWnd, &PtStr); //释放环境指针
return 0;
case WM_DESTROY:
PostQuitMessage(0);
KillTimer(hWnd, 1);
return 0;
default:
return(DefWindowProc(hWnd, iMessage, wParam, lParam));
}
}
long i=0,j=0;
long lCentreX=0,lCentreY=0,lRadious=(long)(0.2*dfRange);
POINT lpSin[100];
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));
}
HDC hDC; //定义指向设备的句柄
HBRUSH hBrush; //定义指向画刷的句柄
HPEN hPen; //定义指向画笔的句柄
PAINTSTRUCT PtStr;//定义指向包含绘图信息的结构体变量
switch(iMessage) //处理消息
{
case WM_PAINT: //处理绘图消息
hDC=BeginPaint(hWnd,&PtStr);
SetWindowOrgEx(hDC,-200,-200,NULL); //设置映像模式
hPen=CreatePen(PS_DASH,1,RGB(255,0,0)); //黑色画笔
SelectObject(hDC,hPen); //选择画笔
Polyline(hDC,lpSin,100);
if(i<=25) //第一个1/4周期
{
hPen=CreatePen(PS_DASH,1,RGB(255,0,0));
hBrush=CreateHatchBrush(HS_BDIAGONAL,RGB(255,0,0));
lRadious=(long)(dfRange*0.2+i%25*dfRange*0.4/25);//计算半径
}
else if(i<=50)
{
hPen=CreatePen(PS_DASH,1,RGB(0,255,0));
hBrush=CreateHatchBrush(HS_BDIAGONAL,RGB(0,255,0));
lRadious=(long)(dfRange*0.2+i%25*dfRange*0.4/25);//计算半径
}
else if(i<=75)
{
hPen=CreatePen(PS_DASH,1,RGB(0,0,255));
hBrush=CreateHatchBrush(HS_BDIAGONAL,RGB(0,0,255));
lRadious=(long)(dfRange*0.2+i%25*dfRange*0.4/25);//计算半径
}
else
{
hPen=CreatePen(PS_DASH,1,RGB(255,255,0));
hBrush=CreateHatchBrush(HS_BDIAGONAL,RGB(255,255,0));
lRadious=(long)(dfRange*0.2+i%25*dfRange*0.4/25);//计算半径
}
/*SelectObject(hDC,hBrush);
SelectObject(hDC,hPen);
lCentreX=lpSin[i].x;
lCentreY=lpSin[i].Y;
Ellipse(hDC,lCentreX-lRadious,lCentreY-lRadious,
lCentreX-lRadious,lCentreY-lRadious);
I++;
DeleteObject(hPen);
DeleteObject(hBrush);
EndPaint(hWnd,&PtStr);
Sleep(100);
if(i<100) InvalidateRect(hWnd,NUll,1)l
return 0;
*/
SelectObject(hDC,hBrush); //选择画刷
SelectObject(hDC,hPen);
lCentreX=lpSin[i].x; //圆心x坐标
lCentreY=lpSin[i].y; //圆心y坐标
Ellipse(hDC,lCentreX-lRadious,lCentreY-lRadious,
lCentreX+lRadious,lCentreY+lRadious); //画圆
i++;
DeleteObject(hPen); //删除画笔
DeleteObject(hBrush); //删除画刷
EndPaint(hWnd,&PtStr); //删除设备环境指针
Sleep(100); //停0.1秒
if(i<100) InvalidateRect(hWnd,NULL,1); //刷新用户区
return 0;
case WM_DESTROY: //关闭窗口
PostQuitMessage(0);
return 0;
default:
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
}
int iFontFlag=0;
//主函数
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
MSG Message;
if (!InitWindowClass(hInstance, nCmdShow))
{
MessageBox(NULL, _T("创建窗口失败!"), _T("创建窗口"), NULL);
return 1;
}
while (GetMessage(&Message, 0, 0, 0))//消息循环
{
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return (int)Message.wParam;
}
//消息处理函数
long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam)
{
HDC hDC;
HFONT hF;
PAINTSTRUCT ps;
TEXTMETRIC tm;
char lpsz_1[]="欲穷千里目 更上一层楼";
char chFont[7];
int X=0,Y=0;
int nCharlen=strlen(lpsz_1);
switch(iMessage)
{
case WM_CREATE:
SetTimer(hWnd,1,200,NULL);
break;
case WM_PAINT:
hDC=BeginPaint(hWnd,&ps);
if(iFontFlag/nCharlen==0)
{
SetTextColor(hDC,RGB(255,0,0));
strcpy_s(chFont,"宋体");
}else if(iFontFlag/nCharlen==1)
{
SetTextColor(hDC,RGB(255,255,0));
strcpy_s(chFont,"楷体_");
}else if(iFontFlag/nCharlen==2)
{
SetTextColor(hDC,RGB(0,0,255));
strcpy_s(chFont,"仿宋体");
}
else if(iFontFlag/nCharlen==3)
{
SetTextColor(hDC,RGB(0,255,0));
strcpy_s(chFont,"黑体");
}else {
iFontFlag=0;
SetTextColor(hDC,RGB(255,0,0));
}
hF=CreateFont(
40,
0,
0,
0,
400,
0,
0,
0,
GB2312_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS, //默认裁剪精度
DEFAULT_QUALITY, //默认输出质量
DEFAULT_PITCH| FF_DONTCARE, //默认间距
chFont);
SelectObject(hDC,hF);
GetTextMetrics(hDC,&tm);
TextOut(hDC,X,Y,&lpsz_1[iFontFlag%nCharlen],nCharlen-iFontFlag&nCharlen);
iFontFlag+=2;
DeleteObject(hF);
EndPaint(hWnd,&ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
KillTimer(hWnd,1);
return 0;
case WM_TIMER:
InvalidateRect(hWnd,NULL,1);
break;
default:
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
return 0;
}
int nNum = 0, nMaxNum = 20;
long WINAPI WndProc(HWND hWnd, UINT iMessage, UINT wParam, LONG lParam) {
HDC hDC; //定义设备环境句柄.
HBRUSH hBrush; //定义画刷句柄
HPEN hPen; //定义画笔句柄
PAINTSTRUCT PtStr; //定义包含绘图信息的结构体变量
int nCentreX, nCentreY; //定义3个叶片的圆心的坐标.
double Angle;
switch(iMessage) {
case WM_CREATE:
SetTimer(hWnd, 9999, 100, NULL);
return 0;
case WM_TIMER:
InvalidateRect(hWnd, NULL, 1); //重绘窗口区域.
return 0;
case WM_PAINT: //处理绘图消息.
hDC = BeginPaint(hWnd, &PtStr); //获得设备环境指针.
SetViewportOrgEx(hDC, 300, 200, NULL);
//绘制外圆
hPen = (HPEN)GetStockObject(BLACK_PEN);
SelectObject(hDC, hPen);
Ellipse(hDC, -100, -100, 100, 100);
//绘制风车的叶片
hBrush = CreateSolidBrush(RGB(255, 0, 0)); //画红色的叶片.
SelectObject(hDC, hBrush);
Angle = 2 * Pi / nMaxNum * nNum;
nCentreX = (int)(50 * cos(fAngle));
nCentreY = (int)(50 * sin(fAngle));
Pie(hDC, nCentreX - 50, nCentreY - 50,
nCentreX + 50, nCentreY + 50,
(int)(nCentreX + 50 * cos(fAngle)), (int)(nCentreY + 50 * sin(fAngle)),
(int)(nCentreX + 50 * cos(fAngle + Pi)), (int)(nCentreY + 50 * sin(fAngle + Pi)));
hBrush = CreateSolidBrush(RGB(255, 255, 0)); //画天蓝色的叶片.
SelectObject(hDC, hBrush);
nCentreX = (int)(50 * cos(fAngle + 2 * Pi / 3));
nCentreY = (int)(50 * sin(fAngle + 2 * Pi / 3));
Pie(hDC, nCentreX - 50, nCentreY - 50,
nCentreX + 50, nCentreY + 50,
(int)(nCentreX + 50 * cos(fAngle + 2 * Pi / 3)), (int)(nCentreY + 50 * sin(fAngle + 2 * Pi / 3)),
(int)(nCentreX + 50 * cos(fAngle + Pi + 2 * Pi / 3)), (int)(nCentreY + 50 * sin(fAngle + Pi + 2 * Pi / 3)));
hBrush = CreateSolidBrush(RGB(0, 255, 255)); //画黄色的叶片.
SelectObject(hDC, hBrush);
nCentreX = (int)(50 * cos(fAngle + 4 * Pi / 3));
nCentreY = (int)(50 * sin(fAngle + 4 * Pi / 3));
Pie(hDC, nCentreX - 50, nCentreY - 50,
nCentreX + 50, nCentreY + 50,
(int)(nCentreX + 50 * cos(fAngle + 4 * Pi / 3)), (int)(nCentreY + 50 * sin(fAngle + 4 * Pi / 3)),
(int)(nCentreX + 50 * cos(fAngle + Pi + 4 * Pi / 3)), (int)(nCentreY + 50 * sin(fAngle + Pi + 4 * Pi / 3)));
nNum++; //当前序数加1.
Sleep(100); //等待0.1秒.
InvalidateRect(hWnd, NULL, 1); //重绘窗口区域.
EndPaint(hWnd, &PtStr); //释放环境指针
return 0;
case WM_DESTROY:
PostQuitMessage(0);
KillTimer(hWnd, 1);
return 0;
default:
return(DefWindowProc(hWnd, iMessage, wParam, lParam));
}
}