mfc 多邊形繪製

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章