首頁 > 軟體

C#實現在表單上的統計圖效果

2022-02-12 19:00:52

本文範例為大家分享了C#實現在表單上的統計圖,供大家參考,具體內容如下

忽然要用到C#來製作統計圖,起初不太清除怎麼弄,看了一些程式碼實現統計圖的檔案。終於實現了條形圖的設定,後來又需要餅狀圖。本來還是想自己畫的後來才發現C#是有這種表單控制元件的,控制元件畫比我強太多了。

這是我自己做的條形圖的函數:

public static int width = 400, height = 400;//宣告寬與高
  Bitmap bitmap = new Bitmap(width, height);//建立一個繪圖物件
    //這四個引數分別是表的列名,tp1,tp2,tp3均是條形的長,s1,s2,s3代表每個條形的資料
    public void createImage(string s, int tp1, int tp2,int tp3, string s1, string s2,string s3)
        {
            Graphics g = Graphics.FromImage(bitmap);
            g.FillRectangle(Brushes.Black, 0, 0, 400, 400);//邊框
            try
            {
                g.Clear(Color.White);
                //建立6個brush,用於填充顏色
                Brush brush1 = new SolidBrush(Color.White);
                Brush brush2 = new SolidBrush(Color.Black);
                Brush brush3 = new SolidBrush(Color.Red);
                Brush brush4 = new SolidBrush(Color.Green);
                Brush brush5 = new SolidBrush(Color.Orange);
                Brush brush6 = new SolidBrush(Color.DarkBlue);
                //建立兩個Font物件,用於設定字型
                Font font1 = new Font("宋體", 16, FontStyle.Bold);
                Font font2 = new Font("Courier New", 8);

                g.FillRectangle(brush1, 0, 0, width, height);//繪製背景圖
                g.DrawString(s, font1, brush2, new Point(90, 20));//繪製標題

                Point p1 = new Point(30, 300);
                Point p2 = new Point(330, 300);
                //這裡用到的減式是由於畫布的座標系和數學中的座標系不同,參考下面的圖
                g.DrawString(s1, font2, brush2, new Point(90, 285 - (tp1 * 10)));
                g.DrawString(s2, font2, brush2, new Point(150, 285 - (tp2 * 10)));
                g.DrawString(s2, font2, brush2, new Point(210, 285 - (tp3 * 10)));
                g.FillRectangle(brush3, 90, 300 - (tp1 * 10), 50, tp1 * 10);//
                g.FillRectangle(brush4, 150, 300 - (tp2 * 10), 50, tp2 * 10);//
                g.FillRectangle(brush5, 210, 300 - (tp3 * 10), 50, tp3 * 10);
                g.DrawLine(new Pen(Color.Black), p1, p2);//繪製一條直線
                pictureBox1.Image = bitmap;
            }
            catch (Exception)
            {
                throw;
            }
        }

畫布中的座標系:

如果換成C#中的chart控制元件來做就簡單多了

1.找到控制元件的Legends屬性把其中的Enabled改成False。
2.找到控制元件的Series屬性把其中的ChartType改成你需要的表形式。
3.接下就是為chart控制元件新增資料。

新增資料的方式之一:

string[] xData = { "經理", "總監", "銷售" };
  int[] yData = {10, 20, 30};
  chart1.Series[0]["PieLabelStyle"] = "Outside";//將文字移到外側
  chart1.Series[0]["PieLineColor"] = "Black";//繪製黑色的連線。
  chart1.Series[0].Points.DataBindXY(xData, yData);

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com