连云港早教中心:实例300 饼形图表分析男女比例

来源:百度文库 编辑:中财网 时间:2024/05/05 19:19:50
实例300  饼形图表分析男女比例
实例说明
开发人力资源管理系统时,通常需要对公司男女比例进行统计,以便做出相应调整。利用饼形图显示公司男女比例是最佳选择,也最为直观,本实例运行结果如图13.13所示。
  
图13.13  饼形图表分析男女比例
技术要点
本实例通过SQL语句,从数据库中检索出相关数据并进行比例计算。在绘制图形时,通过数据计算出相应数据在饼形图中所分配的角度数据,然后利用Graphics类中的FillPie方法完成图形绘制。FillPie方法的语法格式如下。
FillPie(Brush brush,float x,float y,float width,
float height,float startAngle,float sweepAngle)
参数说明:
brush:确定填充特性的Brush。
x:边框左上角的x坐标,该边框定义扇形区所属的椭圆。
y:边框左上角的y坐标,该边框定义扇形区所属的椭圆。
width:边框的宽度,该边框定义扇形区所属的椭圆。
height:边框的高度,该边框定义扇形区所属的椭圆。
startAngle:从x轴沿顺时针方向旋转到扇形区第一个边所测得的角度(以度为单位)。
sweepAngle:从startAngle参数沿顺时针方向旋转到扇形区第二个边所测得的角度(以度为单位)。
注意:此方法填充由椭圆的一段弧线和与该弧线端点相交的两条射线定义的扇形区的内部。该椭圆由边框定义。扇形区由startAngle和sweepAngle参数定义的两条射线以及这两条射线与椭圆交点之间的弧线组成。如果sweepAngle参数大于360度或小于-360度,则将其分别视为360度或-360度。
实现过程
(1)新建一个网站,将其命名为Ex13_13,默认主页名为Default.aspx。
(2)主要程序代码如下。
private void CreateImage( )
{
//连数据库
SqlConnection conn = new SqlConnection(ConfigurationManager.
AppSettings["ConSql"]);
conn.Open( );
string str1 = "select *  from tb_12";
SqlCommand cmd = new SqlCommand(str1, conn);
DataSet ds = new DataSet( );
SqlDataAdapter adapter1 = new SqlDataAdapter(cmd);
adapter1.Fill(ds);
conn.Close( );
//计算男、女总和
string str2 = "SELECT SUM(Man+Woman) AS Number FROM tb_12";
SqlDataAdapter adapter2 = new SqlDataAdapter(str2, conn);
DataSet ds2 = new DataSet( );
adapter2.Fill(ds2);
int Sum = Convert.ToInt32(ds2.Tables[0].Rows[0][0].ToString( ));
//获取男员工数目
int man = Convert.ToInt32(ds.Tables[0].Rows[0][0].ToString( ));
//获取女员工数目
int woman = Convert.ToInt32(ds.Tables[0].Rows[0][1].ToString( ));
//创建画图对象
int width=400,height=450;
Bitmap bitmap = new Bitmap(width,height);
Graphics g = Graphics.FromImage(bitmap);
try
{
//清空背景色
g.Clear(Color.White);
Pen pen1 = new Pen(Color.Red);
Brush brush1 = new SolidBrush(Color.YellowGreen);
Brush brush2 = new SolidBrush(Color.Blue);
Brush brush3 = new SolidBrush(Color.Brown);
Font font1 = new Font("Courier New",16,FontStyle.Bold);
Font font2 = new Font("Courier New", 8);
g.FillRectangle(brush1, 0, 0, width, height);    //绘制背景图
g.DrawString("公司男女比例饼形图", font1, brush2,
new Point(80, 20));  //书写标题
int piex = 100, piey = 100, piew = 150, pieh = 150;
//男员工在圆中分配的角度
float angle1 = Convert.ToSingle((360/
Convert.ToSingle(Sum)) * Convert.ToSingle(man));
//女员工在圆中分配的角度
float angle2 = Convert.ToSingle((360/
Convert.ToSingle(Sum)) * Convert.ToSingle(woman));
g.FillPie(brush2, piex, piey, piew, pieh, 0, angle1);
//绘制男员工所占比例
g.FillPie(brush3, piex, piey, piew, pieh, angle1, angle2);
//绘制女员工所占比例
//绘制标识
g.DrawRectangle(pen1, 50, 300, 300, 100);  //绘制范围框
g.FillRectangle(brush2, 90, 320, 20, 10);  //绘制小矩形
g.DrawString("男员工占公司总人数比例:"+
Convert.ToSingle(man)*100 / Convert.ToSingle
(Sum) + "%", font2, brush2, 120, 320);
g.FillRectangle(brush3, 90,360, 20, 10);
g.DrawString("女员工占公司总人数比例:" +
Convert.ToSingle(woman) *100/ Convert.ToSingle(Sum)
+ "%", font2, brush3, 120,360);
}
catch(Exception md)
{
Response.Write(md.Message);
}
System.IO.MemoryStream ms = new System.IO.MemoryStream( );
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
Response.ClearContent( );
Response.ContentType = "image/Gif";
Response.BinaryWrite(ms.ToArray( ));
}
举一反三
根据本实例,读者可以绘制:
公司员工业绩分析图;
不同类别图书销售对比图。