MFC区域填充
设计一个屏幕窗口;确定五个点的坐标,在窗口内绘制出一个五角星。根据扫描填色算法或种子填色算法将五角星填充红色。谁有这样才程序或者做过这样的题目啊 有...
设计一个屏幕窗口;确定五个点的坐标,在窗口内绘制出一个五角星。根据扫描填色算法或种子填色算法将五角星填充红色。谁有这样才程序 或者做过这样的题目啊 有视频教程的更好
展开
2个回答
展开全部
无论是对什么图形进行填充,或者构造任何区域,其本质就是将这片区域的每一个像素的属性表达出来。。。
既然你已经确认了5个点的坐标,那么就是平常人们用手来画五角星的过程,你应该是会的。一共画5笔,从最左边的点开始,先到最右边的点,再到左下角的点,再到最上面的点,再到右下角的点,最后返回最左边的点把图形闭合。如此用LineTo()将五角星闭合。
如此一来,就会形成6个闭合的图形,分别是5个以5个点为一点的三角形,和中心的5边型。将这5个图形中的所有像素全部填充为红色即可。
填充的算法有很多,像是三角形和矩形,都有现成的API进行填充。对于中间的五边形,可以采用矩阵边缘检测的方法取得空白矩阵向量然后填色(这也是最有效的算法);也可以采用接近逼近法来填充,就是在五边形的内部生成无数个红色的小三角形,将五边形填充满;也可以采用覆盖法来填充(前提是正五角星),就是用数学公式算出五角星的内接圆,把这个圆形填充为红色即可。
我建议你将整幅画布按照矩阵的方式进行操作,最后用BitBlt扫描到前台,这些操作都会异常简单。。。
既然你已经确认了5个点的坐标,那么就是平常人们用手来画五角星的过程,你应该是会的。一共画5笔,从最左边的点开始,先到最右边的点,再到左下角的点,再到最上面的点,再到右下角的点,最后返回最左边的点把图形闭合。如此用LineTo()将五角星闭合。
如此一来,就会形成6个闭合的图形,分别是5个以5个点为一点的三角形,和中心的5边型。将这5个图形中的所有像素全部填充为红色即可。
填充的算法有很多,像是三角形和矩形,都有现成的API进行填充。对于中间的五边形,可以采用矩阵边缘检测的方法取得空白矩阵向量然后填色(这也是最有效的算法);也可以采用接近逼近法来填充,就是在五边形的内部生成无数个红色的小三角形,将五边形填充满;也可以采用覆盖法来填充(前提是正五角星),就是用数学公式算出五角星的内接圆,把这个圆形填充为红色即可。
我建议你将整幅画布按照矩阵的方式进行操作,最后用BitBlt扫描到前台,这些操作都会异常简单。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询