📄 default.aspx.cs
字号:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing;
using System.Drawing.Imaging;
using System.Data.SqlClient;
using System.Collections;
using System.IO;
public partial class _Default : System.Web.UI.Page
{
SqlConnection Con;
SqlCommand Com;
SqlDataAdapter Da;
DataSet ds;
string strconn = "Server=(local);Database=db_05;Uid=sa;Pwd=";
protected void Page_Load(object sender, EventArgs e)
{
DrawCircle();
if (!IsPostBack)
{
bindYear();
Session["line"] = DropDownList1.SelectedValue;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
Session["line"] = DropDownList1.SelectedValue;
}
//绑定年份
private void bindYear()
{
Con = new SqlConnection(strconn);
Da = new SqlDataAdapter("select distinct ShowYear from 访问量表", strconn);
ds = new DataSet();
Da.Fill(ds);
DropDownList1.DataSource = ds;
DropDownList1.DataTextField = "ShowYear";
DropDownList1.DataBind();
}
//绘制饼形图
private void DrawCircle()
{
if (!File.Exists(Server.MapPath("饼形图.gif")))
{
Con = new SqlConnection(strconn);
Con.Open();
string cmdtxt = "select ShowYear,sum(Year_M1+Year_M2+Year_M3+Year_M4+Year_M5+Year_M6+Year_M7+Year_M8+Year_M9+Year_M10+Year_M11+Year_M12) from 访问量表 group by ShowYear";
Com = new SqlCommand(cmdtxt, Con);
ds = new DataSet();
Da = new SqlDataAdapter(Com);
Da.Fill(ds);
Con.Close();
float Total = 0.0f, Tmp;
int iloop;
for (iloop = 0; iloop < ds.Tables[0].Rows.Count; iloop++)
{
//转换成单精度。也可写成Convert.ToInt32
Tmp = Convert.ToSingle(ds.Tables[0].Rows[iloop][1]);
Total += Tmp;
}
//设置字体,fonttitle为主标题的字体
Font fontlegend = new Font("verdana", 9), fonttitle = new Font("verdana", 10, FontStyle.Bold);
//背景宽
int width = 230;
int bufferspace = 15;
int legendheight = fontlegend.Height * (ds.Tables[0].Rows.Count + 1) + 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 (iloop = 0; iloop < ds.Tables[0].Rows.Count; iloop++)
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.LightYellow), pierect);
//以下为画饼图(有几行row画几个)
float currentdegree = 0.0f;
RectangleHotSpot RHSpot = new RectangleHotSpot();
for (iloop = 0; iloop < ds.Tables[0].Rows.Count; iloop++)
{
objgraphics.FillPie((SolidBrush)colors[iloop], pierect, currentdegree,
Convert.ToSingle(ds.Tables[0].Rows[iloop][1]) / Total * 360);
currentdegree += Convert.ToSingle(ds.Tables[0].Rows[iloop][1]) / Total * 360;
}
//以下为生成主标题
SolidBrush blackbrush = new SolidBrush(Color.Black);
string title = "网站各年访问量调查";
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.Black, 2), 0, height - legendheight, width, legendheight);
for (iloop = 0; iloop < ds.Tables[0].Rows.Count; iloop++)
{
objgraphics.FillRectangle((SolidBrush)colors[iloop], 5, height - legendheight + fontlegend.Height * iloop + 5, 10, 10);
objgraphics.DrawString(((String)ds.Tables[0].Rows[iloop][0]) + "年 —— " + Convert.ToString(Convert.ToSingle(ds.Tables[0].Rows[iloop][1]) * 100 / Total).Substring(0, 5) + "%", fontlegend, blackbrush,
20, height - legendheight + fontlegend.Height * iloop + 1);
}
//图像总的高度-一行字体的高度,即是最底行的一行字体高度(height - fontlegend.Height )
objgraphics.DrawString("总访问量:" + Convert.ToString(Total), fontlegend, blackbrush, 5, height - fontlegend.Height);
objbitmap.Save(Server.MapPath("饼形图.gif"));
objgraphics.Dispose();
objbitmap.Dispose();
}
Image1.ImageUrl = "~/饼形图.gif";
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -