亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C# 繪制統計圖大全(柱狀圖, 折線圖, 扇形圖)

2020-01-24 00:57:10
字體:
來源:轉載
供稿:網友

統計圖形種類繁多, 有柱狀圖, 折線圖, 扇形圖等等, 而統計圖形的繪制方法也有很多, 有Flash制作的統計圖形, 有水晶報表生成統計圖形, 有專門制圖軟件制作, 也有編程語言自己制作的;這里我們用就C# 制作三款最經典的統計圖: 柱狀圖, 折線圖和扇形圖;既然是統計, 當然需要數據, 這里演示的數據存于Sql Server2000中, 三款統計圖形都是動態生成. 其中柱狀圖我會附上制作步驟, 其他兩款統計圖直接附源碼.

說明: 需求不一樣, 統計圖形繪制后的顯示效果也不一樣, 比如這里柱狀圖的主要需求是為了比較每一期報名人數與通過人數的差, 因此會把兩根柱子放在一起會使比較結果一目了然. 因此大家可以根據需要靈活繪制.

一. 柱狀圖的繪制.

繪制步驟如下:

1. 定義繪圖用到的類.

int height = 500, width = 700;Bitmap image = new Bitmap(width, height);Graphics g = Graphics.FromImage(image);Pen mypen = new Pen(brush, 1);

2. 繪制圖框.

g.FillRectangle(Brushes.WhiteSmoke, 0, 0, width, height);

3. 繪制橫向坐標線

for (int i = 0; i < 14; i++) {g.DrawLine(mypen, x, 80, x, 340);x = x + 40;} 

4. 繪制縱向坐標線

for (int i = 0; i < 9; i++) {g.DrawLine(mypen, 60, y, 620, y);y = y + 26;}

5. 繪制橫坐標值

String[] n = { "第一期", "第二期", "第三期", "第四期", "全年" };for (int i = 0; i < 7; i++) {g.DrawString(n[i].ToString(), font, Brushes.Blue, x, 348); x = x + 78;}

6. 繪制縱坐標值

String[] m = {"250","225", "200", "175", "150", "125", "100“};for (int i = 0; i < 10; i++) {g.DrawString(m[i].ToString(), font, Brushes.Blue, 25, y);y = y + 26;}

7. 定義數組存儲數據庫中統計的數據

int[] Count1 = new int[7]; //存儲從數據庫讀取的報名人數int[] Count2 = new int[7]; //存儲從數據庫讀取的通過人數

8. 從數據庫中讀取報名人數與通過人數

SqlConnection Con = new SqlConnection("Server=(Local);Database=committeeTraining;");Con.Open();string cmdtxt2 = "SELECT * FROM ##Count where Company='" + ****+ "'";SqlDataAdapter da = new SqlDataAdapter(cmdtxt2, Con);DataSet ds = new DataSet();da.Fill(ds);

9. 將讀取的數據存儲到數組中

Count1[0] = Convert.ToInt32(ds.Tables[0].Rows[0][“count1”].ToString()); Count1[1] = Convert.ToInt32(ds.Tables[0].Rows[0][“count3”].ToString()); Count2[0] = Convert.ToInt32(ds.Tables[0].Rows[0][“count2”].ToString()); Count2[1] = Convert.ToInt32(ds.Tables[0].Rows[0]["count4"].ToString());

10.定義畫筆和畫刷準備繪圖

x = 80; Font font2 = new System.Drawing.Font("Arial", 10, FontStyle.Bold);SolidBrush mybrush = new SolidBrush(Color.Red);SolidBrush mybrush2 = new SolidBrush(Color.Green);

11. 根據數組中的值繪制柱狀圖

(1)第一期報名人數

g.FillRectangle(mybrush, x, 340 - Count1[0], 20, Count1[0]);g.DrawString(Count1[0].ToString(), font2, Brushes.Red, x, 340 - Count1[0] - 15);

(2) 第一期通過人數

x = x + 20;g.FillRectangle(mybrush2, x, 340 - Count2[0], 20, Count2[0]);g.DrawString(Count2[0].ToString(), font2, Brushes.Green, x, 340 - Count2[0] - 15);

12. 將圖形輸出到頁面.

System.IO.MemoryStream ms = new System.IO.MemoryStream();image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);Response.ClearContent();Response.ContentType = "image/Jpeg";Response.BinaryWrite(ms.ToArray());

最終柱狀圖的效果圖:
柱狀圖的完整代碼:

private void CreateImage(){int height = 500, width = 700;Bitmap image = new Bitmap(width, height);//創建Graphics類對象Graphics g = Graphics.FromImage(image);try{//清空圖片背景色g.Clear(Color.White);Font font = new Font("Arial", 10, FontStyle.Regular);Font font1 = new Font("宋體", 20, FontStyle.Bold);LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.BlueViolet, 1.2f, true);g.FillRectangle(Brushes.WhiteSmoke, 0, 0, width, height);// Brush brush1 = new SolidBrush(Color.Blue);g.DrawString(this.ddlTaget.SelectedItem.Text + " " + this.ddlYear.SelectedItem.Text + " 成績統計柱狀圖", font1, brush, new PointF(70, 30));//畫圖片的邊框線g.DrawRectangle(new Pen(Color.Blue), 0, 0, image.Width - 1, image.Height - 1);Pen mypen = new Pen(brush, 1);//繪制線條//繪制橫向線條int x = 100;for (int i = 0; i < 14; i++){g.DrawLine(mypen, x, 80, x, 340);x = x + 40;}Pen mypen1 = new Pen(Color.Blue, 2);x = 60;g.DrawLine(mypen1, x, 80, x, 340);//繪制縱向線條int y = 106;for (int i = 0; i < 9; i++){g.DrawLine(mypen, 60, y, 620, y);y = y + 26;}g.DrawLine(mypen1, 60, y, 620, y);//x軸String[] n = { "第一期", "第二期", "第三期", "第四期", "上半年", "下半年", "全年統計" };x = 78;for (int i = 0; i < 7; i++){g.DrawString(n[i].ToString(), font, Brushes.Blue, x, 348); //設置文字內容及輸出位置x = x + 78;}//y軸String[] m = {"250","225", "200", "175", "150", "125", "100", " 75"," 50", " 25", " 0"};y = 72;for (int i = 0; i < 10; i++){g.DrawString(m[i].ToString(), font, Brushes.Blue, 25, y); //設置文字內容及輸出位置y = y + 26;}int[] Count1 = new int[7];int[] Count2 = new int[7];SqlConnection Con = new SqlConnection("Server=(Local);Database=committeeTraining;Uid=sa;Pwd=**");Con.Open();string cmdtxt2 = "SELECT * FROM ##Count where Company='" + this.ddlTaget.SelectedItem.Text.Trim() + "'";SqlDataAdapter da = new SqlDataAdapter(cmdtxt2, Con);DataSet ds = new DataSet();da.Fill(ds);Count1[0] = Convert.ToInt32(ds.Tables[0].Rows[0]["count1"].ToString());Count1[1] = Convert.ToInt32(ds.Tables[0].Rows[0]["count3"].ToString());Count1[2] = Convert.ToInt32(ds.Tables[0].Rows[0]["count5"].ToString());Count1[3] = Convert.ToInt32(ds.Tables[0].Rows[0]["count7"].ToString());Count1[4] = Count1[0] + Count1[1];Count1[5] = Count1[2] + Count1[3];Count1[6] = Convert.ToInt32(ds.Tables[0].Rows[0]["count9"].ToString());Count2[0] = Convert.ToInt32(ds.Tables[0].Rows[0]["count2"].ToString());Count2[1] = Convert.ToInt32(ds.Tables[0].Rows[0]["count4"].ToString());Count2[2] = Convert.ToInt32(ds.Tables[0].Rows[0]["count6"].ToString());Count2[3] = Convert.ToInt32(ds.Tables[0].Rows[0]["count8"].ToString());Count2[4] = Count2[0] + Count2[1];Count2[5] = Count2[2] + Count2[3];Count2[6] = Convert.ToInt32(ds.Tables[0].Rows[0]["count10"].ToString());//繪制柱狀圖.x = 80;Font font2 = new System.Drawing.Font("Arial", 10, FontStyle.Bold);SolidBrush mybrush = new SolidBrush(Color.Red);SolidBrush mybrush2 = new SolidBrush(Color.Green);//第一期g.FillRectangle(mybrush, x, 340 - Count1[0], 20, Count1[0]);g.DrawString(Count1[0].ToString(), font2, Brushes.Red, x, 340 - Count1[0] - 15);x = x + 20;g.FillRectangle(mybrush2, x, 340 - Count2[0], 20, Count2[0]);g.DrawString(Count2[0].ToString(), font2, Brushes.Green, x, 340 - Count2[0] - 15);//第二期x = x + 60;g.FillRectangle(mybrush, x, 340 - Count1[1], 20, Count1[1]);g.DrawString(Count1[1].ToString(), font2, Brushes.Red, x, 340 - Count1[1] - 15);x = x + 20;g.FillRectangle(mybrush2, x, 340 - Count2[1], 20, Count2[1]);g.DrawString(Count2[1].ToString(), font2, Brushes.Green, x, 340 - Count2[1] - 15);//第三期x = x + 60;g.FillRectangle(mybrush, x, 340 - Count1[2], 20, Count1[2]);g.DrawString(Count1[2].ToString(), font2, Brushes.Red, x, 340 - Count1[2] - 15);x = x + 20;g.FillRectangle(mybrush2, x, 340 - Count2[2], 20, Count2[2]);g.DrawString(Count2[2].ToString(), font2, Brushes.Green, x, 340 - Count2[2] - 15);//第四期x = x + 60;g.FillRectangle(mybrush, x, 340 - Count1[3], 20, Count1[3]);g.DrawString(Count1[3].ToString(), font2, Brushes.Red, x, 340 - Count1[3] - 15);x = x + 20;g.FillRectangle(mybrush2, x, 340 - Count2[3], 20, Count2[3]);g.DrawString(Count2[3].ToString(), font2, Brushes.Green, x, 340 - Count2[3] - 15);//上半年x = x + 60;g.FillRectangle(mybrush, x, 340 - Count1[4], 20, Count1[4]);g.DrawString(Count1[4].ToString(), font2, Brushes.Red, x, 340 - Count1[4] - 15);x = x + 20;g.FillRectangle(mybrush2, x, 340 - Count2[4], 20, Count2[4]);g.DrawString(Count2[4].ToString(), font2, Brushes.Green, x, 340 - Count2[4] - 15);//下半年x = x + 60;g.FillRectangle(mybrush, x, 340 - Count1[5], 20, Count1[5]);g.DrawString(Count1[5].ToString(), font2, Brushes.Red, x, 340 - Count1[5] - 15);x = x + 20;g.FillRectangle(mybrush2, x, 340 - Count2[5], 20, Count2[5]);g.DrawString(Count2[5].ToString(), font2, Brushes.Green, x, 340 - Count2[5] - 15);//全年x = x + 60;g.FillRectangle(mybrush, x, 340 - Count1[6], 20, Count1[6]);g.DrawString(Count1[6].ToString(), font2, Brushes.Red, x, 340 - Count1[6] - 15);x = x + 20;g.FillRectangle(mybrush2, x, 340 - Count2[6], 20, Count2[6]);g.DrawString(Count2[6].ToString(), font2, Brushes.Green, x, 340 - Count2[6] - 15);//繪制標識Font font3 = new System.Drawing.Font("Arial", 10, FontStyle.Regular);g.DrawRectangle(new Pen(Brushes.Blue), 170, 400, 250, 50); //繪制范圍框g.FillRectangle(Brushes.Red, 270, 410, 20, 10); //繪制小矩形g.DrawString("報名人數", font3, Brushes.Red, 292, 408);g.FillRectangle(Brushes.Green, 270, 430, 20, 10);g.DrawString("通過人數", font3, Brushes.Green, 292, 428);System.IO.MemoryStream ms = new System.IO.MemoryStream();image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);Response.ClearContent();Response.ContentType = "image/Jpeg";Response.BinaryWrite(ms.ToArray());}finally{g.Dispose();image.Dispose();}}

二. 折線統計圖的繪制

效果:

折線圖的完整代碼:

private void CreateImage(){int height = 480, width = 700;Bitmap image = new Bitmap(width, height);Graphics g = Graphics.FromImage(image);try{//清空圖片背景色g.Clear(Color.White);Font font = new System.Drawing.Font("Arial", 9, FontStyle.Regular);Font font1 = new System.Drawing.Font("宋體", 20, FontStyle.Regular);Font font2 = new System.Drawing.Font("Arial", 8, FontStyle.Regular);LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.Blue, 1.2f, true);g.FillRectangle(Brushes.AliceBlue, 0, 0, width, height);Brush brush1 = new SolidBrush(Color.Blue);Brush brush2 = new SolidBrush(Color.SaddleBrown);g.DrawString(this.ddlTaget.SelectedItem.Text + " " + this.ddlYear.SelectedItem.Text + " 成績統計折線圖", font1, brush1, new PointF(85, 30));//畫圖片的邊框線g.DrawRectangle(new Pen(Color.Blue), 0, 0, image.Width - 1, image.Height - 1);Pen mypen = new Pen(brush, 1);Pen mypen2 = new Pen(Color.Red, 2);//繪制線條//繪制縱向線條int x = 60;for (int i = 0; i < 8; i++){g.DrawLine(mypen, x, 80, x, 340);x = x + 80;}Pen mypen1 = new Pen(Color.Blue, 3);x = 60;g.DrawLine(mypen1, x, 82, x, 340);//繪制橫向線條int y = 106;for (int i = 0; i < 10; i++){g.DrawLine(mypen, 60, y, 620, y);y = y + 26;}// y = 106;g.DrawLine(mypen1, 60, y - 26, 620, y - 26);//x軸String[] n = { "第一期", "第二期", "第三期", "第四期", "上半年", "下半年", "全年統計" };x = 45;for (int i = 0; i < 7; i++){g.DrawString(n[i].ToString(), font, Brushes.Red, x, 348); //設置文字內容及輸出位置x = x + 77;}//y軸String[] m = { "220人", " 200人", " 175人", "150人", " 125人", " 100人", " 75人", " 50人"," 25人"};y = 100;for (int i = 0; i < 9; i++){g.DrawString(m[i].ToString(), font, Brushes.Red, 10, y); //設置文字內容及輸出位置y = y + 26;}int[] Count1 = new int[7];int[] Count2 = new int[7];SqlConnection Con = new SqlConnection("Server=(Local);Database=committeeTraining;Uid=sa;Pwd=eesoft");Con.Open();string cmdtxt2 = "SELECT * FROM ##Count where Company='" + this.ddlTaget.SelectedItem.Text.Trim() + "'";SqlDataAdapter da = new SqlDataAdapter(cmdtxt2, Con);DataSet ds = new DataSet();da.Fill(ds);//報名人數Count1[0] = Convert.ToInt32(ds.Tables[0].Rows[0]["count1"].ToString());Count1[1] = Convert.ToInt32(ds.Tables[0].Rows[0]["count3"].ToString());Count1[2] = Convert.ToInt32(ds.Tables[0].Rows[0]["count5"].ToString());Count1[3] = Convert.ToInt32(ds.Tables[0].Rows[0]["count7"].ToString());Count1[6] = Convert.ToInt32(ds.Tables[0].Rows[0]["count9"].ToString()); //全年Count1[4] = Count1[0] + Count1[1];Count1[5] = Count1[2] + Count1[3];Count2[0] = Convert.ToInt32(ds.Tables[0].Rows[0]["count2"].ToString());Count2[1] = Convert.ToInt32(ds.Tables[0].Rows[0]["count4"].ToString());Count2[2] = Convert.ToInt32(ds.Tables[0].Rows[0]["count6"].ToString());Count2[3] = Convert.ToInt32(ds.Tables[0].Rows[0]["count8"].ToString());Count2[6] = Convert.ToInt32(ds.Tables[0].Rows[0]["count10"].ToString()); //全年Count2[4] = Count2[0] + Count2[1];Count2[5] = Count2[2] + Count2[3];//顯示折線效果Font font3 = new System.Drawing.Font("Arial", 10, FontStyle.Bold);SolidBrush mybrush = new SolidBrush(Color.Red);Point[] points1 = new Point[7];points1[0].X = 60; points1[0].Y = 340 - Count1[0]; //從106縱坐標開始, 到(0, 0)坐標時points1[1].X = 140; points1[1].Y = 340 - Count1[1];points1[2].X = 220; points1[2].Y = 340 - Count1[2];points1[3].X = 300; points1[3].Y = 340 - Count1[3];points1[4].X = 380; points1[4].Y = 340 - Count1[4];points1[5].X = 460; points1[5].Y = 340 - Count1[5];points1[6].X = 540; points1[6].Y = 340 - Count1[6];g.DrawLines(mypen2, points1); //繪制折線//繪制數字g.DrawString(Count1[0].ToString(), font3, Brushes.Red, 58, points1[0].Y - 20);g.DrawString(Count1[1].ToString(), font3, Brushes.Red, 138, points1[1].Y - 20);g.DrawString(Count1[2].ToString(), font3, Brushes.Red, 218, points1[2].Y - 20);g.DrawString(Count1[3].ToString(), font3, Brushes.Red, 298, points1[3].Y - 20);g.DrawString(Count1[4].ToString(), font3, Brushes.Red, 378, points1[4].Y - 20);g.DrawString(Count1[5].ToString(), font3, Brushes.Red, 458, points1[5].Y - 20);g.DrawString(Count1[6].ToString(), font3, Brushes.Red, 538, points1[6].Y - 20);Pen mypen3 = new Pen(Color.Green, 2);Point[] points2 = new Point[7];points2[0].X = 60; points2[0].Y = 340 - Count2[0];points2[1].X = 140; points2[1].Y = 340 - Count2[1];points2[2].X = 220; points2[2].Y = 340 - Count2[2];points2[3].X = 300; points2[3].Y = 340 - Count2[3];points2[4].X = 380; points2[4].Y = 340 - Count2[4];points2[5].X = 460; points2[5].Y = 340 - Count2[5];points2[6].X = 540; points2[6].Y = 340 - Count2[6];g.DrawLines(mypen3, points2); //繪制折線//繪制通過人數g.DrawString(Count2[0].ToString(), font3, Brushes.Green, 61, points2[0].Y - 15);g.DrawString(Count2[1].ToString(), font3, Brushes.Green, 131, points2[1].Y - 15);g.DrawString(Count2[2].ToString(), font3, Brushes.Green, 221, points2[2].Y - 15);g.DrawString(Count2[3].ToString(), font3, Brushes.Green, 301, points2[3].Y - 15);g.DrawString(Count2[4].ToString(), font3, Brushes.Green, 381, points2[4].Y - 15);g.DrawString(Count2[5].ToString(), font3, Brushes.Green, 461, points2[5].Y - 15);g.DrawString(Count2[6].ToString(), font3, Brushes.Green, 541, points2[6].Y - 15);//繪制標識g.DrawRectangle(new Pen(Brushes.Red), 180, 390, 250, 50); //繪制范圍框g.FillRectangle(Brushes.Red, 270, 402, 20, 10); //繪制小矩形g.DrawString("報名人數", font2, Brushes.Red, 292, 400);g.FillRectangle(Brushes.Green, 270, 422, 20, 10);g.DrawString("通過人數", font2, Brushes.Green, 292, 420);System.IO.MemoryStream ms = new System.IO.MemoryStream();image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);Response.ClearContent();Response.ContentType = "image/Jpeg";Response.BinaryWrite(ms.ToArray());}finally{g.Dispose();image.Dispose();}}

三. 扇形統計圖的繪制

扇形圖完整代碼:

private void CreateImage(){//把連接字串指定為一個常量SqlConnection Con = new SqlConnection("Server=(Local);Database=committeeTraining;Uid=sa;Pwd=**");Con.Open();string cmdtxt = selectString; // "select * from ##Count"; ////SqlCommand Com = new SqlCommand(cmdtxt, Con);DataSet ds = new DataSet();SqlDataAdapter Da = new SqlDataAdapter(cmdtxt, Con);Da.Fill(ds);Con.Close();float Total = 0.0f, Tmp;//轉換成單精度。也可寫成Convert.ToInt32Total = Convert.ToSingle(ds.Tables[0].Rows[0][this.count[0]]);// Total=Convert.ToSingle(ds.Tables[0].Rows[0][this.count[0]]);//設置字體,fonttitle為主標題的字體Font fontlegend = new Font("verdana", 9);Font fonttitle = new Font("verdana", 10, FontStyle.Bold);//背景寬int width = 350;int bufferspace = 15;int legendheight = fontlegend.Height * 10 + bufferspace; //高度int titleheight = fonttitle.Height + bufferspace;int height = width + legendheight + titleheight + bufferspace;//白色背景高int pieheight = width;Rectangle pierect = new Rectangle(0, titleheight, width, pieheight);//加上各種隨機色ArrayList colors = new ArrayList();Random rnd = new Random();for (int i = 0; i < 2; i++)colors.Add(new SolidBrush(Color.FromArgb(rnd.Next(255), rnd.Next(255), rnd.Next(255))));//創建一個bitmap實例Bitmap objbitmap = new Bitmap(width, height);Graphics objgraphics = Graphics.FromImage(objbitmap);//畫一個白色背景objgraphics.FillRectangle(new SolidBrush(Color.White), 0, 0, width, height);//畫一個亮黃色背景 objgraphics.FillRectangle(new SolidBrush(Color.Beige), pierect);//以下為畫餅圖(有幾行row畫幾個)float currentdegree = 0.0f;//畫通過人數objgraphics.FillPie((SolidBrush)colors[1], pierect, currentdegree,Convert.ToSingle(ds.Tables[0].Rows[0][this.count[1]]) / Total * 360);currentdegree += Convert.ToSingle(ds.Tables[0].Rows[0][this.count[1]]) / Total * 360;//未通過人數餅狀圖objgraphics.FillPie((SolidBrush)colors[0], pierect, currentdegree,((Convert.ToSingle(ds.Tables[0].Rows[0][this.count[0]]))-(Convert.ToSingle(ds.Tables[0].Rows[0][this.count[1]]))) / Total * 360);currentdegree += ((Convert.ToSingle(ds.Tables[0].Rows[0][this.count[0]])) - (Convert.ToSingle(ds.Tables[0].Rows[0][this.count[1]]))) / Total * 360;//以下為生成主標題SolidBrush blackbrush = new SolidBrush(Color.Black);SolidBrush bluebrush = new SolidBrush(Color.Blue);string title = " 機關單位成績統計餅狀圖: "+ "/n /n/n";StringFormat stringFormat = new StringFormat();stringFormat.Alignment = StringAlignment.Center;stringFormat.LineAlignment = StringAlignment.Center;objgraphics.DrawString(title, fonttitle, blackbrush,new Rectangle(0, 0, width, titleheight), stringFormat);//列出各字段與得數目objgraphics.DrawRectangle(new Pen(Color.Red, 2), 0, height + 10 - legendheight, width, legendheight + 50);objgraphics.DrawString("----------------統計信息------------------", fontlegend, bluebrush, 20, height - legendheight + fontlegend.Height * 1 + 1);objgraphics.DrawString("統計單位: " + this.ddlTaget.SelectedItem.Text, fontlegend, blackbrush, 20, height - legendheight + fontlegend.Height * 3 + 1);objgraphics.DrawString("統計年份: " + this.ddlYear.SelectedItem.Text, fontlegend, blackbrush, 20, height - legendheight + fontlegend.Height * 4 + 1);objgraphics.DrawString("統計期數: " + this.ddlSpan.SelectedItem.Text, fontlegend, blackbrush, 20, height - legendheight + fontlegend.Height * 5 + 1);objgraphics.FillRectangle((SolidBrush)colors[1], 5,height - legendheight + fontlegend.Height * 8 + 1, 10, 10);objgraphics.DrawString("報名總人數: " + Convert.ToString(Convert.ToSingle(ds.Tables[0].Rows[0][this.count[0]])), fontlegend, blackbrush, 20, height - legendheight + fontlegend.Height * 7 + 1);objgraphics.FillRectangle((SolidBrush)colors[0], 5, height - legendheight + fontlegend.Height * 9 + 1, 10, 10);objgraphics.DrawString("通過總人數: " + Convert.ToString(Convert.ToSingle(ds.Tables[0].Rows[0][this.count[1]])), fontlegend, blackbrush, 20, height - legendheight + fontlegend.Height * 8 + 1);objgraphics.DrawString("未通過人數: " + ((Convert.ToSingle(ds.Tables[0].Rows[0][this.count[0]])) - (Convert.ToSingle(ds.Tables[0].Rows[0][this.count[1]]))), fontlegend, blackbrush, 20, height - legendheight + fontlegend.Height * 9 + 1);objgraphics.DrawString("通過率: " + Convert.ToString((Convert.ToSingle(ds.Tables[0].Rows[0][this.count[1]]) / Convert.ToSingle(ds.Tables[0].Rows[0][this.count[0]])) * 100)+ " %", fontlegend, blackbrush, 20, height - legendheight + fontlegend.Height * 10 + 1);Response.ContentType = "image/Jpeg";objbitmap.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);objgraphics.Dispose();objbitmap.Dispose();}

 這里的統計圖直接輸出到網頁,以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91亚洲精品在线| 亚洲一区二区在线| 日韩电影免费观看中文字幕| 亚洲视频在线看| 日韩精品www| 国产91精品久久久| 91亚洲va在线va天堂va国| 在线观看成人黄色| 国产色综合天天综合网| 97在线观看免费| 欧美日韩一区二区免费在线观看| 久久成年人视频| 57pao国产精品一区| 亚洲视频自拍偷拍| 91亚洲午夜在线| 亚洲香蕉成人av网站在线观看| 欧美肥臀大乳一区二区免费视频| 亚洲欧美成人在线| 国产在线日韩在线| 成人免费淫片aa视频免费| 亚洲女成人图区| 5566成人精品视频免费| 国产精品视频久久久久| 欧美综合国产精品久久丁香| 欧美在线观看日本一区| 性欧美xxxx交| 欧美放荡办公室videos4k| 欧美黄色片免费观看| 中文在线资源观看视频网站免费不卡| 中文字幕综合在线| 欧美日韩爱爱视频| 国产精品自产拍在线观看中文| 成人写真福利网| 成人久久久久久| 欧美日韩亚洲国产一区| 成人久久18免费网站图片| 中文字幕国产精品久久| 日韩在线免费视频观看| 欧美性极品少妇精品网站| 亚洲精品综合精品自拍| 91日本视频在线| 国产精品久久一| 日韩av在线精品| 亚洲欧美成人一区二区在线电影| 高清欧美电影在线| 性色av一区二区三区| 青青在线视频一区二区三区| 色偷偷9999www| 国产成人免费av电影| 激情久久av一区av二区av三区| 亚洲伊人久久大香线蕉av| 国产成人av网| 欧美日韩美女视频| 日韩精品极品毛片系列视频| 亚洲人成网站777色婷婷| 国产香蕉97碰碰久久人人| 国产视频久久久| 色综合天天狠天天透天天伊人| 亚洲国产精品99| 国产一区红桃视频| 亚洲人成电影网站色| 久久网福利资源网站| 欧美性猛交丰臀xxxxx网站| 少妇高潮久久77777| 欧美插天视频在线播放| 国产精品视频午夜| 久久精品国产久精国产思思| 欧美视频免费在线观看| 欧美黑人xxxx| 精品久久久久久久久中文字幕| 国产亚洲精品久久久久动| 国产成人涩涩涩视频在线观看| 欧美专区在线观看| 中文字幕亚洲欧美一区二区三区| 国产精品日韩欧美综合| 亚洲天堂网在线观看| 久久久亚洲国产天美传媒修理工| 日韩中文在线中文网三级| 久久久久国产视频| 国产精品视频xxx| 中文字幕亚洲激情| 欧美亚洲国产视频小说| 欧美激情喷水视频| 国产精品福利在线观看网址| 精品一区二区电影| 成人av在线网址| 黑人巨大精品欧美一区二区一视频| 久久香蕉精品香蕉| 成人综合国产精品| 国产91精品在线播放| 欧美日韩国产麻豆| 亚洲欧美国产va在线影院| 国产精品一区二区久久| 欧美日韩中文字幕在线| 精品亚洲国产视频| 91夜夜未满十八勿入爽爽影院| 精品日本美女福利在线观看| 亚洲福利在线看| 欧美激情女人20p| 红桃视频成人在线观看| 国产精品久久久久久久久久99| 久久久久久中文| 青青草原成人在线视频| 国内精品久久久久| 91亚洲精品一区二区| 欧美黄网免费在线观看| 欧美精品福利视频| 亚洲奶大毛多的老太婆| 伊人激情综合网| 国产精品中文在线| 日韩精品中文字幕有码专区| 91av在线播放| 奇米4444一区二区三区| 国产免费一区二区三区在线能观看| 国产成人aa精品一区在线播放| 亚洲成年人在线| 色av中文字幕一区| 日韩国产激情在线| 精品中文字幕在线观看| 在线视频欧美日韩精品| 亚洲三级免费看| 91久久中文字幕| 亚洲一区二区三区乱码aⅴ蜜桃女| 欧美日韩不卡合集视频| 欧美日本高清一区| 国产精品免费在线免费| 国产精品久久久久久av福利软件| 98视频在线噜噜噜国产| 主播福利视频一区| 久久精品久久久久| 琪琪亚洲精品午夜在线| 欧美激情中文网| 欧美国产精品va在线观看| 久久久人成影片一区二区三区观看| 亚洲高清一区二| 久久视频在线播放| 日韩视频免费大全中文字幕| 欧美日韩亚洲国产一区| 久久久久久久久久久网站| 国产精品久久久久久影视| 久久理论片午夜琪琪电影网| 91av中文字幕| 欧美中文在线观看国产| 亚洲热线99精品视频| 5252色成人免费视频| 亚洲国产日韩欧美在线图片| 欧美香蕉大胸在线视频观看| 欧美性色xo影院| 亚洲a一级视频| 国产精品三级网站| 一区二区三区 在线观看视| 亚洲第一区在线观看| 国产精品极品尤物在线观看| 国语自产在线不卡| 6080yy精品一区二区三区| 国产午夜一区二区| 国产精品九九久久久久久久| 久久精品一偷一偷国产| 97精品视频在线| 欧美中文在线观看国产| 欧美电影免费播放| 91久久国产综合久久91精品网站| 亚洲久久久久久久久久久| 国产伦精品一区二区三区精品视频|