原文地址: http://www.msproject.cn/Article/3DTransparentPie.html
[翻譯]
Julijan Sribar著3D Pie Chart
一個用於繪製立體三維餅狀圖的C#類庫
[簡介]
本文的想法就是建立一個獨立的能夠用於繪製立體三維餅狀圖的類庫。首先,它看起來非常簡單,因為,在Graphics 類中已經有了一個叫DrawPie 的方法。這個方法接收開始角度和展開角度作為參數,因此,看上去不再有什麼其它的問題了。不過它實現的是一個平面的圓餅圖,我需要的是一個三維的透視圖;如果你也正需要這樣的一個控制項,這篇文章將再適合不過了。
[代碼使用]
本文中的PieChart 方案套件括三個類:PieSlice, PieChart3D 和 PieChartControl (繼承於System.Windows.Forms.Panel 控制項)。PieSlice 類提供了所以繪製3-D餅狀圖的功能,你可以設定它的起始、展開角度,顏色,高度及陰影類型。
PieChart3D 類代表整個圖,有幾個建構函式值得注意,它們可以接收下面的值:
顏色值數組
切片displacement(位移)數組
切片的厚度
因為位移是通過切片的"深度"比率和橢圓半徑表示的;最小值0意味著沒有位移,最大值1代表這個形狀佔用了整個橢圓。
切片的厚度,也代表著一個比率(相對於橢圓垂直距離),最大允許的值是0.5。
當然,也可以通過公有的函數,來設定上面的值。注意:如果設定的顏色數量少於切片的數量,顏色會被重用。同樣,如果displacement沒有了,最後一個值也會被複用。
可設定的公有屬性如下:
* Texts,
* Font,
* ForeColor,
* ShadowStyle,
* EdgeColorType,
* EdgeLineWidth,
* InitialAngle,
* FitToBoundingRectangle.
通過文章的示範程式,可以很容易明白各個屬性是什麼含義。
PieChart3D 類還可以用於列印,初始化對象,然後調用它的Draw 方法(提供一個對應的Graphics 對象)。
public void Draw(Graphics graphics) { ... }
如果需要在螢幕上顯示,可以使用PieChartControl;它封裝了圖形到面板的功能。使用者只需要把它放在Form上,然後設定需要的屬性就OK了。例如:
private System.Drawing.PieChart.PieChartControl panelDrawing =new System.Drawing.PieChart.PieChartControl();panelDrawing.Values = new decimal[] { 10, 15, 5, 35};int alpha = 80;panelDrawing.Colors = new Color[] { Color.FromArgb(alpha, Color.Red),Color.FromArgb(alpha, Color.Green),Color.FromArgb(alpha, Color.Yellow),Color.FromArgb(alpha, Color.Blue) };panelDrawing.SliceRelativeDisplacements = new float[] { 0.1F, 0.2F, 0.2F, 0.2F };panelDrawing.Texts = new string[] { "red","green","blue","yellow" };panelDrawing.ToolTips = new string[] { "Peter","Paul","Mary","Brian" };panelDrawing.Font = new Font("Arial", 10F);panelDrawing.ForeColor = SystemColors.WindowTextpanelDrawing.LeftMargin = 10F;panelDrawing.RightMargin = 10F;panelDrawing.TopMargin = 10F;panelDrawing.BottomMargin = 10F;panelDrawing.SliceRelativeHeight = 0.25F;panelDrawing.InitialAngle = -90F;
PieChartControl 類重寫了OnPaint 和OnResize 事件,這兩個事件將允許正確的餅圖重繪任務。
提醒:PieChartControl 類還有一個ToolTips 屬性,它用於當你的滑鼠移到某個切片上的時候,給出對應的Tip,如果沒有設定這個數組,那麼切片對應的值會被顯示。
3DPieChart.rar 3DPieChart_VS2005.rar