mfc绘制多边形
1.头文件定义:
//多边形的顶点,使用vector
//它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组
struct node
{
//由于都是一起进栈的,所以xs和ys都是对应的
vector<int> xs;//多边形顶点横坐标
vector<int> ys;//多边形顶点纵坐标
node* next;
};
//多边形列表
node* pl;
2.构造函数初始化
//多边形列表
pl=new node;
pl->next=NULL;
3.点击处理
//每点击一次鼠标,将该点的坐标point存入plz中
(pl->next->xs).push_back(point.x);
(pl->next->ys).push_back(point.y);
4.多边形画图
void CquhongjuanView::polygon()
{
CDC *pDC=GetDC();
node *q=pl->next;
//从多边形列表里遍历每一个多边形//每个节点就是一个多边形//节点里的对应xs和ys都是多边形各顶点
while(q)
{
//多边形节点里只有一个点
if(q->xs.size()<2)
{
q=q->next;
continue;
}
//有多个点
for(int i=0;i<(q->xs.size())-1;i++)
{
pDC->MoveTo(q->xs[i],q->ys[i]);
pDC->LineTo(q->xs[i+1],q->ys[i+1]);
}
//最后一个点和第一个点连接
pDC->MoveTo(q->xs[q->xs.size()-1],q->ys[q->xs.size()-1]);
pDC->LineTo(q->xs[0],q->ys[0]);
q=q->next;
}
}
效果如图(可以画多个多边形)
ps:其他相关直线圆、椭圆、多边形填充,直线裁剪,多边形裁剪可以来我的博客里找