程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# 繪制統計圖大全(柱狀圖, 折線圖, 扇形圖)

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

編輯:C#入門知識

C# 繪制統計圖大全(柱狀圖, 折線圖, 扇形圖)。本站提示廣大學習愛好者:(C# 繪制統計圖大全(柱狀圖, 折線圖, 扇形圖))文章只能為提供參考,不一定能成為您想要的結果。以下是C# 繪制統計圖大全(柱狀圖, 折線圖, 扇形圖)正文


統計圖形品種單一, 有柱狀圖, 折線圖, 扇形圖等等, 而統計圖形的繪制辦法也有很多, 有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.ToInt32
Total = 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();

}

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved