mfc 多边形绘制

7 篇文章 9 订阅

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:其他相关直线圆、椭圆、多边形填充,直线裁剪,多边形裁剪可以来我的博客里找

  • 4
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值