想建立一个基于C#的ASP的图,数据是从SQL导入的,在存储到XML中。

解决方案 »

  1.   

    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    CreateBamp();

    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion private void CreateBamp()
    {

    hr.GetSexStatAnalyse();//按姓别统计函数

    //计算百分比
    int iCount = Convert.ToInt32(hr.SexCount);
    int ipenboy = Convert.ToInt32(hr.boy / hr.SexCount * 100);
    int ipengirl = Convert.ToInt32(hr.girl / hr.SexCount * 100);

    Bitmap bmap = new Bitmap(800,480);
    Graphics g = Graphics.FromImage(bmap);
    g.Clear(Color.WhiteSmoke);
    int[] arrValues = {hr.boy,hr.girl};
    string[] arrValueNames = new string[]{"男 | "+hr.boy+"人 | ("+ipenboy+"%)","女 | "+hr.girl+"人 | ("+ipengirl+"%)"};
    g.DrawString("按姓别统计(共"+iCount+"人)", new Font("宋体",16), Brushes.Navy, new PointF(130, 40)); //设置标题
    PointF symbolLeg = new PointF(450, 120); //小图标
    PointF descLeg = new PointF(480, 120); //百分比
    for (int i = 0; i < arrValueNames.Length; i++) 

    g.FillRectangle(new SolidBrush(GetColor(i)), symbolLeg.X, symbolLeg.Y, 20, 10); 
    g.DrawRectangle(Pens.Black, symbolLeg.X, symbolLeg.Y, 20, 10); 
    g.DrawString(arrValueNames[i].ToString(), new Font("宋体", 10), Brushes.Black,descLeg); 
    symbolLeg.Y += 15; 
    descLeg.Y += 15; 


    float sglCurrentAngle = 0; 
    float sglTotalAngle = 0; 
    float sglTotalValues = 0; 
    for (int i = 0; i < arrValues.Length; i++) 

    sglTotalValues += arrValues[i]; 

    for (int i = 0; i < arrValues.Length; i++) 

    sglCurrentAngle = arrValues[i] / sglTotalValues * 360; 
    g.FillPie(new SolidBrush(GetColor(i)),100, 100, 250,250, sglTotalAngle, sglCurrentAngle); 
    g.DrawPie(Pens.Black, 100, 100, 250, 250, sglTotalAngle, sglCurrentAngle); 
    sglTotalAngle += sglCurrentAngle; 
    }

    bmap.Save(Response.OutputStream,ImageFormat.Jpeg);

    } /// <summary>
    /// 设置统计颜色
    /// </summary>
    /// <param name="itemIndex"></param>
    /// <returns></returns>
    private Color GetColor(int itemIndex) 

    Color objColor; 
    if (itemIndex == 0) 

    objColor = Color.Gray; 

    else

    objColor = Color.Gold; 


    return objColor; 
    }
      

  2.   

    数据库中存放Binary数据,用byte[]读取出来之后转换成MemoryStream,然后用Image的System.Drawing.Image.FromStream方法形成图像