日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
C#使用GDI+實(shí)現(xiàn)餅狀圖淺析

在向大家詳細(xì)介紹C#使用GDI+實(shí)現(xiàn)餅狀圖之前,首先讓大家了解下Offices的圖形控件,然后全面介紹C#使用GDI+實(shí)現(xiàn)餅狀圖。

當(dāng)我們的軟件需要各種餅狀圖和柱狀圖來(lái)表示數(shù)據(jù)時(shí),我們或許會(huì)想到用Offices中的圖形控件或是第三方控件,但現(xiàn)在的第三方控件大都需要注冊(cè),有些免費(fèi)的控件會(huì)有開(kāi)發(fā)商的標(biāo)記等。而對(duì)于使用Offices的圖形控件來(lái)說(shuō),并不能在程序中得于很好控制,其使用的簡(jiǎn)易程度也較低,所以在這我給出在C#使用GDI+實(shí)現(xiàn)餅狀圖和柱狀圖跟數(shù)據(jù)庫(kù)聯(lián)接顯示數(shù)據(jù)的方法。

 
 
 
  1. using System;
  2. using System.IO;//用于文件存取
  3. using System.Data;//用于數(shù)據(jù)訪問(wèn)
  4. using System.Drawing;//提供畫(huà)GDI+圖形的基本功能
  5. using System.Drawing.Text;//提供畫(huà)GDI+圖形的高級(jí)功能
  6. using System.Drawing.Drawing2D;//提供畫(huà)高級(jí)二維,矢量圖形功能
  7. using System.Drawing.Imaging;//提供畫(huà)GDI+圖形的高級(jí)功能
  8. namespace BaseLayer
  9. {
  10. public class PieChart
  11. {
  12. public PieChart()
  13. {

Render是圖形大標(biāo)題,圖開(kāi)小標(biāo)題,圖形寬度,圖形長(zhǎng)度,餅圖的數(shù)據(jù)集和餅圖的數(shù)據(jù)集要表示出來(lái)的數(shù)據(jù)

 
 
 
  1. public Image Render(string title, string subTitle, int width, 
    int height, DataSet chartData,int DataLine)
  2. {
  3. const int SIDE_LENGTH = 400;
  4. const int PIE_DIAMETER = 200;
  5. DataTable dt = chartData.Tables[0];
  6. //通過(guò)輸入?yún)?shù),取得餅圖中的總基數(shù)
  7. float sumData = 0;
  8. foreach(DataRow dr in dt.Rows)
  9. {
  10. sumData += Convert.ToSingle(dr[DataLine]);
  11. }
  12. //產(chǎn)生一個(gè)image對(duì)象,并由此產(chǎn)生一個(gè)Graphics對(duì)象
  13. Bitmap bm = new Bitmap(width,height);
  14. Graphics g = Graphics.FromImage(bm);
  15. //設(shè)置對(duì)象g的屬性
  16. g.ScaleTransform((Convert.ToSingle(width))/SIDE_LENGTH,
    (Convert.ToSingle(height))/SIDE_LENGTH);
  17. g.SmoothingMode = SmoothingMode.Default;
  18. g.TextRenderingHint = TextRenderingHint.AntiAlias;
  19. //畫(huà)布和邊的設(shè)定
  20. g.Clear(Color.White);
  21. g.DrawRectangle(Pens.Black,0,0,SIDE_LENGTH-1,SIDE_LENGTH-1);
  22. //畫(huà)餅圖標(biāo)題
  23. g.DrawString(title,new Font(Tahoma,14),Brushes.Black,new PointF(5,5));
  24. //畫(huà)餅圖的圖例
  25. g.DrawString(subTitle,new Font(Tahoma,12),Brushes.Black,new PointF(7,35));
  26. //畫(huà)餅圖
  27. float curAngle = 0;
  28. float totalAngle = 0;
  29. for(int i=0;i;i++)
  30. {
  31. curAngle = Convert.ToSingle(dt.Rows[i][DataLine]) / sumData * 360;
  32. g.FillPie(new SolidBrush(ChartUtil.GetChartItemColor(i)),100,65,
    PIE_DIAMETER,PIE_DIAMETER,totalAngle,curAngle);
  33. g.DrawPie(Pens.Black,100,65,PIE_DIAMETER,PIE_DIAMETER,totalAngle,curAngle);
  34. totalAngle += curAngle;
  35. }
  36. //畫(huà)圖例框及其文字
  37. g.DrawRectangle(Pens.Black,200,300,199,99);
  38. g.DrawString(圖表說(shuō)明,new Font(Tahoma,12,FontStyle.Bold),
    Brushes.Black,new PointF(200,300));
  39. //畫(huà)圖例各項(xiàng)
  40. PointF boxOrigin = new PointF(210,330);
  41. PointF textOrigin = new PointF(235,326);
  42. float percent = 0;
  43. for(int i=0;i;i++)
  44. {
  45. g.FillRectangle(new SolidBrush(ChartUtil.GetChartItemColor(i)),
    boxOrigin.X,boxOrigin.Y,20,10);
  46. g.DrawRectangle(Pens.Black,boxOrigin.X,boxOrigin.Y,20,10);
  47. percent = Convert.ToSingle(dt.Rows[i][DataLine]) / sumData * 100;
  48. g.DrawString(dt.Rows[i][1].ToString() + - + dt.Rows[i][0].ToString() + 
    ( + percent.ToString(0) + %),new Font(Tahoma,10),Brushes.Black,textOrigin);
  49. boxOrigin.Y += 15;
  50. textOrigin.Y += 15;
  51. }
  52. //回收資源
  53. g.Dispose();
  54. return (Image) bm;
  55. }

以上介紹C#使用GDI+實(shí)現(xiàn)餅狀圖


當(dāng)前標(biāo)題:C#使用GDI+實(shí)現(xiàn)餅狀圖淺析
標(biāo)題網(wǎng)址:http://www.dlmjj.cn/article/cdjjegh.html