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:其他相關直線圓、橢圓、多邊形填充,直線裁剪,多邊形裁剪可以來我的博客裏找