程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> VC6繪制3D餅狀圖

VC6繪制3D餅狀圖

編輯:關於VC++

工作中需要使用到餅狀圖,在網上找了半天,也沒有找到那種漂亮的3D餅狀圖 的代碼,都是2D的,不喜歡。 無意間,看到有人用.net實現的3D餅狀圖,得到啟 發,干脆自己做一個吧。

其實很簡單,就是用Pie扇形函數分別畫出兩個相同的、上下間距的分割圓。 但是,僅僅這樣還不夠,你看:

(圖一)

圖中方框的部分都是需要修正的。原文的作者是如圖二這樣修正的:

(圖二)

但是,作者也說了,在餅圖比較厚或者分割比較多時,因為角度的關系,還是 會有漏色的現象。通過修改,我使用如圖三的修正方法:

(圖三)

效果不錯。具體是,先繪制下邊一個分割圓,在每一次繪制完一個扇形之後, 就用適當的顏色修補需要遮蓋的地方,因為角度的關系,有些地方不能一次修好 ,後面的扇形又會破懷修過的地方,所以進行了反復的覆蓋,這是最麻煩的一步 。完成之後,就簡單了,再把上面的分割圓畫出來,就像一個蓋子蓋上一樣。當 然,使用的顏色順序要和下面的分割圓一樣。為了使畫出來的圓餅有立體感,我 把顏色分成了兩組,一一對應,色調是一樣的,只是上面一組更亮一些,這樣畫 出來就有立體感了。完成圖:

(圖四)

你也可以使用一組不太亮的顏色,並且調整橢圓的長寬比例,使得立體圖看著 更舒服自然一些,如圖五:

具體過程請看代碼,我都作了詳細的注釋。本代碼在VC6.0、XP操作系統下編 譯通過,運行正常。

最後需要說明的是,本試例代碼為了簡單,只使用了20個元素的顏色數組,這 在分割扇形數等於20時,最後一個仍會漏色,你可以增加顏色數來避免使用中出 現這個問題,也可以通過計算自動生成顏色,從而徹底解決它。

本文配套源碼

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved