★33°空間‰


                                 ----★七彩服飾  【最潮拜☆日單精品】【Esprit】【Hotwind】滿150包郵-女裝-流行女裝    www.7color.hb.cn

                                 ----智力比知識重要,素質比智力重要,覺悟比素質更重要
          posts - 110,comments - 35,trackbacks - 0

          using System;
          using System.IO;//用于文件存取
          using System.Data;//用于數據訪問
          using System.Drawing;//提供畫GDI+圖形的基本功能
          using System.Drawing.Text;//提供畫GDI+圖形的高級功能
          using System.Drawing.Drawing2D;//提供畫高級二維,矢量圖形功能
          using System.Drawing.Imaging;//提供畫GDI+圖形的高級功能
          namespace BaseLayer
          {
          ?public class PieChart
          ?{
          ??public PieChart()
          ??{
          ??}

          //Render是圖形大標題,圖開小標題,圖形寬度,圖形長度,餅圖的數據集和餅圖的數據集要表示出來的數據

          ??public Image Render(string title, string subTitle, int width, int height, DataSet chartData,int DataLine)
          ??{
          ???const int SIDE_LENGTH = 400;
          ???const int PIE_DIAMETER = 200;
          ???DataTable dt = chartData.Tables[0];
          ??
          ???//通過輸入參數,取得餅圖中的總基數
          ???float sumData = 0;
          ???foreach(DataRow dr in dt.Rows)
          ???{
          ????sumData += Convert.ToSingle(dr[DataLine]);
          ???}
          ???//產生一個image對象,并由此產生一個Graphics對象
          ???Bitmap bm = new Bitmap(width,height);
          ???Graphics g = Graphics.FromImage(bm);
          ???//設置對象g的屬性
          ???g.ScaleTransform((Convert.ToSingle(width))/SIDE_LENGTH,(Convert.ToSingle(height))/SIDE_LENGTH);
          ???g.SmoothingMode = SmoothingMode.Default;
          ???g.TextRenderingHint = TextRenderingHint.AntiAlias;
          ??
          ???//畫布和邊的設定
          ???g.Clear(Color.White);
          ???g.DrawRectangle(Pens.Black,0,0,SIDE_LENGTH-1,SIDE_LENGTH-1);
          ???//畫餅圖標題
          ???g.DrawString(title,new Font("Tahoma",14),Brushes.Black,new PointF(5,5));
          ???//畫餅圖的圖例
          ???g.DrawString(subTitle,new Font("Tahoma",12),Brushes.Black,new PointF(7,35));
          ???//畫餅圖
          ???float curAngle = 0;
          ???float totalAngle = 0;
          ???for(int i=0;i<dt.Rows.Count;i++)
          ???{
          ????curAngle = Convert.ToSingle(dt.Rows[DataLine]) / sumData * 360;
          ??
          ????g.FillPie(new SolidBrush(ChartUtil.GetChartItemColor(i)),100,65,PIE_DIAMETER,PIE_DIAMETER,totalAngle,curAngle);
          ????g.DrawPie(Pens.Black,100,65,PIE_DIAMETER,PIE_DIAMETER,totalAngle,curAngle);
          ????totalAngle += curAngle;
          ???}
          ???//畫圖例框及其文字
          ???g.DrawRectangle(Pens.Black,200,300,199,99);
          ???g.DrawString("圖表說明",new Font("Tahoma",12,FontStyle.Bold),Brushes.Black,new PointF(200,300));
          ??
          ???//畫圖例各項
          ???PointF boxOrigin = new PointF(210,330);
          ???PointF textOrigin = new PointF(235,326);
          ???float percent = 0;
          ???for(int i=0;i<dt.Rows.Count;i++)
          ???{
          ????g.FillRectangle(new SolidBrush(ChartUtil.GetChartItemColor(i)),boxOrigin.X,boxOrigin.Y,20,10);
          ????g.DrawRectangle(Pens.Black,boxOrigin.X,boxOrigin.Y,20,10);
          ????percent = Convert.ToSingle(dt.Rows[DataLine]) / sumData * 100;
          ????g.DrawString(dt.Rows[1].ToString() + " - " + dt.Rows[0].ToString() + " (" + percent.ToString("0") + "%)",new Font("Tahoma",10),Brushes.Black,textOrigin);
          ????boxOrigin.Y += 15;
          ????textOrigin.Y += 15;
          ???}
          ???//回收資源
          ???g.Dispose();
          ???return (Image) bm;
          ??
          ??}
          ?}
          ??
          ?//畫條形圖
          ?public class BarChart
          ?{
          ??public BarChart()
          ??{
          ??}

          //Render是圖形大標題,圖開小標題,圖形寬度,圖形長度,餅圖的數據集和餅圖的數據集
          ??public Image Render(string title, string subTitle, int width, int height, DataSet chartData)
          ??{
          ???const int SIDE_LENGTH = 400;
          ???const int CHART_TOP = 75;
          ???const int CHART_HEIGHT = 200;
          ???const int CHART_LEFT = 50;
          ???const int CHART_WIDTH = 300;
          ???DataTable dt = chartData.Tables[0];
          ??
          ???//計算最高的點
          ???float highPoint = 0;
          ???foreach(DataRow dr in dt.Rows)
          ???{
          ????if(highPoint<Convert.ToSingle(dr[0]))
          ????{
          ?????highPoint = Convert.ToSingle(dr[0]);
          ????}
          ???}
          ???//建立一個Graphics對象實例
          ???Bitmap bm = new Bitmap(width,height);
          ???try
          ???{
          ????Graphics g = Graphics.FromImage(bm);
          ????//設置條圖圖形和文字屬性
          ????g.ScaleTransform((Convert.ToSingle(width))/SIDE_LENGTH,(Convert.ToSingle(height))/SIDE_LENGTH);
          ????g.SmoothingMode = SmoothingMode.Default;
          ????g.TextRenderingHint = TextRenderingHint.AntiAlias;
          ??
          ????//設定畫布和邊
          ????g.Clear(Color.White);
          ????g.DrawRectangle(Pens.Black,0,0,SIDE_LENGTH-1,SIDE_LENGTH-1);
          ????//畫大標題
          ????g.DrawString(title,new Font("Tahoma",14),Brushes.Black,new PointF(5,5));
          ????//畫小標題
          ????g.DrawString(subTitle,new Font("Tahoma",12),Brushes.Black,new PointF(7,35));
          ????//畫條形圖
          ????float barWidth = CHART_WIDTH / (dt.Rows.Count * 2);
          ????PointF barOrigin = new PointF(CHART_LEFT + (barWidth / 2),0);
          ????float barHeight = dt.Rows.Count;
          ????for(int i=0;i<dt.Rows.Count;i++)
          ????{
          ?????barHeight = Convert.ToSingle(dt.Rows[0]) * 200 / highPoint * 1;
          ?????barOrigin.Y = CHART_TOP + CHART_HEIGHT - barHeight;
          ?????g.FillRectangle(new SolidBrush(ChartUtil.GetChartItemColor(i)),barOrigin.X,barOrigin.Y,barWidth,barHeight);
          ?????barOrigin.X = barOrigin.X + (barWidth * 2);
          ????}
          ????//設置邊
          ????g.DrawLine(new Pen(Color.Black,2),new Point(CHART_LEFT,CHART_TOP),new Point(CHART_LEFT,CHART_TOP + CHART_HEIGHT));
          ????g.DrawLine(new Pen(Color.Black,2),new Point(CHART_LEFT,CHART_TOP + CHART_HEIGHT),new Point(CHART_LEFT + CHART_WIDTH,CHART_TOP + CHART_HEIGHT));
          ????//畫圖例框和文字
          ????g.DrawRectangle(new Pen(Color.Black,1),200,300,199,99);
          ????g.DrawString("圖表說明",new Font("Tahoma",12,FontStyle.Bold),Brushes.Black,new PointF(200,300));
          ??
          ????//畫圖例
          ????PointF boxOrigin = new PointF(210,330);
          ????PointF textOrigin = new PointF(235,326);
          ????for(int i=0;i<dt.Rows.Count;i++)
          ????{
          ?????g.FillRectangle(new SolidBrush(ChartUtil.GetChartItemColor(i)),boxOrigin.X,boxOrigin.Y,20,10);
          ?????g.DrawRectangle(Pens.Black,boxOrigin.X,boxOrigin.Y,20,10);
          ?????g.DrawString(dt.Rows[1].ToString() + " - " + dt.Rows[0].ToString(),new Font("Tahoma",10),Brushes.Black,textOrigin);
          ?????boxOrigin.Y += 15;
          ?????textOrigin.Y += 15;
          ????}
          ????//輸出圖形
          ????g.Dispose();
          ????return bm;
          ???}
          ???catch
          ???{
          ????return bm;
          ???}???
          ??}
          ?}
          ?public class ChartUtil
          ?{
          ??public ChartUtil()
          ??{
          ??}
          ??public static Color GetChartItemColor(int itemIndex)
          ??{
          ???Color selectedColor;
          ???switch(itemIndex)
          ???{
          ????case 0:
          ?????selectedColor = Color.Blue;
          ?????break;
          ????case 1:
          ?????selectedColor = Color.Red;
          ?????break;
          ????case 2:
          ?????selectedColor = Color.Yellow;
          ?????break;
          ????case 3:
          ?????selectedColor = Color.Purple;
          ?????break;
          ????default:
          ?????selectedColor = Color.Green;
          ?????break;
          ???}
          ???return selectedColor;
          ??}
          ?}
          }

          posted on 2006-09-30 11:38 圣域飛俠 閱讀(869) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 南和县| 榆林市| 湖南省| 花莲县| 河西区| 东港市| 同心县| 荃湾区| 清水县| 固镇县| 栾城县| 长泰县| 永仁县| 双峰县| 聊城市| 翼城县| 万年县| 独山县| 新营市| 德州市| 吉安县| 梓潼县| 泸溪县| 黔西| 长沙市| 清原| 望都县| 西宁市| 通渭县| 克什克腾旗| 旬邑县| 砚山县| 仙居县| 德兴市| 周口市| 海阳市| 吉木萨尔县| 白河县| 尤溪县| 疏附县| 陈巴尔虎旗|