★33°空間‰


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

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

          using System;
          using System.IO;//用于文件存取
          using System.Data;//用于數(shù)據(jù)訪問
          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是圖形大標(biāo)題,圖開小標(biāo)題,圖形寬度,圖形長度,餅圖的數(shù)據(jù)集和餅圖的數(shù)據(jù)集要表示出來的數(shù)據(jù)

          ??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];
          ??
          ???//通過輸入?yún)?shù),取得餅圖中的總基數(shù)
          ???float sumData = 0;
          ???foreach(DataRow dr in dt.Rows)
          ???{
          ????sumData += Convert.ToSingle(dr[DataLine]);
          ???}
          ???//產(chǎn)生一個image對象,并由此產(chǎn)生一個Graphics對象
          ???Bitmap bm = new Bitmap(width,height);
          ???Graphics g = Graphics.FromImage(bm);
          ???//設(shè)置對象g的屬性
          ???g.ScaleTransform((Convert.ToSingle(width))/SIDE_LENGTH,(Convert.ToSingle(height))/SIDE_LENGTH);
          ???g.SmoothingMode = SmoothingMode.Default;
          ???g.TextRenderingHint = TextRenderingHint.AntiAlias;
          ??
          ???//畫布和邊的設(shè)定
          ???g.Clear(Color.White);
          ???g.DrawRectangle(Pens.Black,0,0,SIDE_LENGTH-1,SIDE_LENGTH-1);
          ???//畫餅圖標(biāo)題
          ???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是圖形大標(biāo)題,圖開小標(biāo)題,圖形寬度,圖形長度,餅圖的數(shù)據(jù)集和餅圖的數(shù)據(jù)集
          ??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);
          ????//設(shè)置條圖圖形和文字屬性
          ????g.ScaleTransform((Convert.ToSingle(width))/SIDE_LENGTH,(Convert.ToSingle(height))/SIDE_LENGTH);
          ????g.SmoothingMode = SmoothingMode.Default;
          ????g.TextRenderingHint = TextRenderingHint.AntiAlias;
          ??
          ????//設(shè)定畫布和邊
          ????g.Clear(Color.White);
          ????g.DrawRectangle(Pens.Black,0,0,SIDE_LENGTH-1,SIDE_LENGTH-1);
          ????//畫大標(biāo)題
          ????g.DrawString(title,new Font("Tahoma",14),Brushes.Black,new PointF(5,5));
          ????//畫小標(biāo)題
          ????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);
          ????}
          ????//設(shè)置邊
          ????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)  編輯  收藏

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 项城市| 雷山县| 南昌市| 绥中县| 泸水县| 都江堰市| 临漳县| 汨罗市| 义马市| 黄梅县| 楚雄市| 绥江县| 略阳县| 德格县| 湛江市| 喀喇沁旗| 珠海市| 西藏| 沈丘县| 迭部县| 枣强县| 宝丰县| 绥化市| 张掖市| 清徐县| 永新县| 永宁县| 深州市| 方山县| 岱山县| 临安市| 云浮市| 綦江县| 丹江口市| 揭阳市| 淳安县| 无极县| 尼玛县| 佛冈县| 东城区| 博白县|