MFC下如何绘制一个类似云(cloud)的图形

本文介绍了如何在MFC中绘制类似云的图形,通过计算顶点间距离来绘制不同数量的弧线,解决顶点距离不足绘制完整弧线的问题,以及判断多边形顶点顺序是顺时针还是逆时针,确保弧线正确绘制在外围。同时,文章提到了需要扩大刷新区域以适应弧线的存在。
摘要由CSDN通过智能技术生成

How to draw a cloud shape with MFC

问题描述:添加一种云状,有曲线外边的绘图工具,类似line,circle,rectangle。通过鼠标点击的点确定图形的顶点,在由此形成的多边形外围绘制曲线,形成最终图形。多边形可以凸或者凹,但不可以自交叉(self-intersect)。


解决方案:每次取出两个相邻的顶点,通过计算两顶点的距离,得出可以绘制弧线的数量,并绘制数目不等的半圆弧连接顶点,这时弧线的半径是固定的。(当然也可以绘制固定个数的弧线,此时弧线的半径是可变的,但是忽大忽小的弧线导致绘制效果不太理想。)

遇到的问题:

1. 当弧线半径一定时,顶点间的距离无法保证可以绘制完整的弧线。

有两个选择:一个是在顶点处终止弧的绘制,每条边自行负责绘制弧线。另一个是当一个边的距离不够绘制一个完整的弧线时,跨越顶点绘制到邻近的边上,这时候绘制的不是半圆弧了。第二种方法需要更多的计算。相比之下,第一种方法比较简单,但是有两种情况需要区分:

(1)两顶点的距离非常近,无法绘制出一个完整的弧。(N=0)

此时需要直接用两个顶点作为弧线的起始点,绘制一个小弧。

(2)两顶点的距离足够绘制N(N>=1)个完整的弧,但还会有剩余的距离绘制一个不完整的弧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值