分类: C/C++
2008-10-14 12:11:34
其实很简单,就是用Pie扇形函数分别画出两个相同的、上下间距的分割圆。但是,仅仅这样还不够,你看:
(图一)
图中方框的部分都是需要修正的。原文的作者是如图二这样修正的:
(图二)
但是,作者也说了,在饼图比较厚或者分割比较多时,因为角度的关系,还是会有漏色的现象。通过修改,我使用如图三的修正方法:
(图三)
效果不错。具体是,先绘制下边一个分割圆,在每一次绘制完一个扇形之后,就用适当的颜色修补需要遮盖的地方,因为角度的关系,有些地方不能一次修好,后面
的扇形又会破怀修过的地方,所以进行了反复的覆盖,这是最麻烦的一步。完成之后,就简单了,再把上面的分割圆画出来,就像一个盖子盖上一样。当然,使用的
颜色顺序要和下面的分割圆一样。为了使画出来的圆饼有立体感,我把颜色分成了两组,一一对应,色调是一样的,只是上面一组更亮一些,这样画出来就有立体感
了。完成图:
(图四)
你也可以使用一组不太亮的颜色,并且调整椭圆的长宽比例,使得立体图看着更舒服自然一些,如图五:
具体过程请看代码,我都作了详细的注释。本代码在VC6.0、XP操作系统下编译通过,运行正常。