★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 圣域飛俠 閱讀(866) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 石狮市| 浦江县| 大田县| 定陶县| 台南县| 崇文区| 大洼县| 历史| 莎车县| 志丹县| 雅安市| 团风县| 夏津县| 屏南县| 辉南县| 丽江市| 昌乐县| 新平| 西安市| 同江市| 油尖旺区| 贵溪市| 改则县| 海宁市| 通海县| 香港| 中西区| 栖霞市| 金秀| 买车| 鄂伦春自治旗| 田东县| 洛南县| 金昌市| 大邑县| 贵阳市| 邵阳县| 连江县| 南陵县| 阿鲁科尔沁旗| 五常市|