创建一个新的AppWizard项目,命名为FPstar3,选择Single Document,其他都选用默认属性,单击Finish完成生成应用程序的步骤。进入之后,选择View->ClassWizard->Message Maps->Class name->CFPstar3View,添加WM_PAINT函数,编辑函数:
void CFPstar3View::OnPaint()
{
CPaintDC dc(this); // device context for painting
//颜色列表
static DWORD colorList[9]={RGB(0,0,0), //黑色
RGB(255,0,0), //红色
RGB(0,255,0), //绿色
RGB(0,0,255), //蓝色
RGB(255,0,255), //紫色
RGB(255,255,0), //黄色
RGB(0,255,255), //洋红色
RGB(127,127,127),//灰色
RGB(255,255,255)};//白色
POINT dpoint[6];
CPen newPen; //新画笔
CPen * oldPen;//指向老画笔对象的指针
r=100; //质心距离各顶点的距离
x1=y1=200;//质心坐标
newPen.CreatePen(PS_SOLID,3,colorList[i]);//创建新画笔
oldPen=dc.SelectObject(&newPen);//选择所创建的新画笔
dpoint[0].x=(long)(x1+r*cos(p/5+n*p/180));//point1
dpoint[0].y=(long)(y1+r*sin(p/5+n*p/180));
dpoint[1].x=(long)(x1+r*cos(p/5+4*p/5+n*p/180));//point3
dpoint[1].y=(long)(y1+r*sin(p/5+4*p/5+n*p/180));
dpoint[2].x=(long)(x1+r*cos(p/5+8*p/5+n*p/180));//point4
dpoint[2].y=(long)(y1+r*sin(p/5+8*p/5+n*p/180));
dpoint[3].x=(long)(x1+r*cos(p/5+2*p/5+n*p/180));//point2
dpoint[3].y=(long)(y1+r*sin(p/5+2*p/5+n*p/180));
dpoint[4].x=(long)(x1+r*cos(p/5+16*p/5+n*p/180));//point5
dpoint[4].y=(long)(y1+r*sin(p/5+16*p/5+n*p/180));
dpoint[5].x=(long)(x1+r*cos(p/5+n*p/180));//point1
dpoint[5].y=(long)(y1+r*sin(p/5+n*p/180));
dc.Polyline(dpoint,6);
dc.SelectObject(oldPen);
newPen.DeleteObject();
// TODO: Add your message handler code here
// Do not call CView::OnPaint() for painting messages
}
这里要注意的是各个顶点的坐标,是以质心为原点算出来的五个定点的坐标分别为程序中红色的部分。
向CFPstar3View中添加WM_TIMER和OnInitialUpdate函数,编辑函数如下:
void CFPstar3View::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
UpdateData(1);
if(nIDEvent==1)
{
n++;
i++;
if(i==4)
i=1;
InvalidateRect(0);
}
UpdateData(0);
CView::OnTimer(nIDEvent);
}
void CFPstar3View::OnInitialUpdate()
{
CView::OnInitialUpdate();
n=i=1;//颜色和角度赋初值
SetTimer(1,200,NULL);
// TODO: Add your specialized code here and/or call the base class
}
这样编译肯定会出现错误,主要是我们没有加头文件“math.h”和宏定义p,在文件的开头加上
#define p 3.1415926
#include"math.h"
呵呵,这样就大功告成了!!效果见下图。
http://blog.sina.com.cn/s/blog_4c82872301000b2y.html