程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#發現之旅第八講 ASP.NET圖形開發帶超鏈接的餅圖(6)

C#發現之旅第八講 ASP.NET圖形開發帶超鏈接的餅圖(6)

編輯:關於C語言

在這個方法中,我們首先計算所有項目的數值和。然後遍歷所有的項目,計 算它的扇形區域的起始角度和終止角度。由於要顯示的是橢圓形餅圖,相對於正圓圖形是被 壓扁的,因此這個起始角度和終止角度需要調用FixAngle函數進行修正。

由於在計算 機屏幕上繪制扇形是順時針方向的,而我們察看一般習慣是順時針看的,因此這裡需要反向 遍歷餅圖項目。

計算各個餅圖項目的角度數據後,我們可以繪制圖形或者獲得圖形定 位信息。首先我們定義函數CreatePath函數來獲得指定餅圖項目的路徑對象。代碼如下。

/// <summary>
/// 為一個餅圖項目創建路徑對象
/// </summary>
/// <param name="item">餅圖項目 </param>
/// <returns>創建的路徑對象</returns>
public GraphicsPath CreatePath( PIEShapeItem item )
{
  GraphicsPath path = new GraphicsPath();
  path.AddPIE(
    intLeft ,
     intTop ,
    intWidth ,
    intHeight ,
     item.StartAngle ,
    item.EndAngle - item.StartAngle );
  return path ;
}

這個函數也很簡單,創建一個路徑對象,然後添加一個扇形區 域。

我們定義了一個Draw函數來繪制餅圖圖形。其代碼為

/// <summary>
/// 繪制餅圖圖形
/// </summary>
/// <param name="g">圖形繪制對象</param>
/// <param name="ClipRectangle">剪切矩形</param>
public void Draw( Graphics g , Rectangle ClipRectangle )
{
  foreach( PIEShapeItem item in this )
  {
    using( GraphicsPath path = CreatePath( item ))
    {
      using( SolidBrush b = new SolidBrush( item.Color ))
      {
        g.FillPath( b , path );
         g.DrawPath( Pens.Black , path );
      }
    }
  }
}

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