Asp.NET绘图

这里演示常用的三种图形(饼图、柱图、折线图)的做法。

1、使用饼图做产品销售额分析图。

 

private   void  BindCard(DataTable dt)
    
{
        
string[] MonNum = new string[20];
        
string[] MonCount = new string[20];
        
decimal total = 0.0M;
        
string strXdata = String.Empty;
        
string strYdata = String.Empty;
        
//为数组赋值
        for (int i = 0; i < dt.Rows.Count; i++)
        
{
            
if (ddlDataType.SelectedIndex == 0)
            
{
                MonCount[i] 
= dt.Rows[i][2].ToString();
                strYdata 
+= MonCount[i] + " ";
            }

            
else
            
{
                MonCount[i] 
= dt.Rows[i][1].ToString();
                strYdata 
+= MonCount[i] + " ";
            }

            MonNum[i] 
= ProductCate.GetDext(dt.Rows[i][0].ToString()); //名称
            if (strXdata.Length == 0)
            
{
                strXdata 
= MonNum[i];
            }

            
else
            
{
                strXdata 
+= " " + MonNum[i];
            }

        }

        
foreach (string strValue in MonCount)
        
{
            
if (!string.IsNullOrEmpty(strValue))
            
{
                strYdata 
+= strValue + " ";
            }

        }


        
//创建ChartSpace对象来放置图表
        ChartSpace laySpace = new ChartSpaceClass();
        
//在ChartSpace对象中添加图表
        ChChart InsertChart = laySpace.Charts.Add(0);
        InsertChart.Type 
= (ChartChartTypeEnum)Enum.Parse(typeof(ChartChartTypeEnum), ddlPicType.SelectedValue);

        
//指定图表是否需要图例标注
        InsertChart.HasLegend = true;
        InsertChart.HasTitle 
= true;//为图表添加标题
        InsertChart.Title.Caption = _Title;//标题名称

        
//添加一个series系列
        InsertChart.SeriesCollection.Add(0);

        
//给定series系列的名字
        InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimSeriesNames, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, "产品销售额分布");
        
//给定分类
        InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, strXdata);
        
//给定值
        InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strYdata);
        ChDataLabels mytb 
= InsertChart.SeriesCollection[0].DataLabelsCollection.Add();
        mytb.HasCategoryName 
= true;    //显示项目名称
        mytb.HasBubbleSize = true;
        mytb.HasPercentage 
= true;  //显示百分比
        mytb.HasValue = true;   //显示值
        mytb.Separator = " ";
        mytb.Font.Color 
= "Blue";
        mytb.Font.Name 
= "Times New Roman";
        
string tempName = "Sum1";
        
string strRelativePath = "./" + tempName + ".gif";
        
string strAbsolutePath = (Server.MapPath(".")) + "/" + tempName + ".gif";
        laySpace.ExportPicture(strAbsolutePath, 
"GIF"500400);
        
//把图片添加到placeholder中,并在页面上显示
        string strImageTag = "<IMG SRC='" + strRelativePath + "?ID="+MathClass.GetRandom(6)+"'/>";
        phImg.Controls.Add(
new LiteralControl(strImageTag));


    }


2、使用柱图做区域销售额分析图

  private   void  BindCard(DataTable dt)
    
{
        
string strSeriesName = "销售额分布区域图";
        
//存放月
        string[] MonNum = new string[100];
        
//存放数据
        string[] MonCount = new string[100];
        
decimal total = 0.0M;
        
string strXdata = String.Empty;
        
string strYdata = String.Empty;
        
//为数组赋值
        for (int i = 0; i < dt.Rows.Count; i++)
        
{
          
            MonCount[i] 
= dt.Rows[i][2].ToString();
            strYdata 
+= MonCount[i] + " ";
            MonNum[i] 
= dt.Rows[i][1].ToString();
            
if (strXdata.Length == 0)
            
{
                strXdata 
= MonNum[i];
            }

            
else
            
{
                strXdata 
+= " " + MonNum[i];
            }

        }

        
foreach (string strValue in MonCount)
        
{
            
if (!string.IsNullOrEmpty(strValue))
            
{
                strYdata 
+= strValue + " ";
            }

        }

        
//创建ChartSpace对象来放置图表
        ChartSpace laySpace = new ChartSpaceClass();
        
//在ChartSpace对象中添加图表
        ChChart InsertChart = laySpace.Charts.Add(0);
        InsertChart.HasTitle 
= true;//为图表添加标题
        InsertChart.Title.Caption = _Title;//标题名称
        
//为x,y轴添加图示说明
        InsertChart.Axes[0].HasTitle = false;
        InsertChart.Axes[
1].HasTitle = false;

        
//添加一个series系列
        InsertChart.SeriesCollection.Add(0);
        InsertChart.SeriesCollection[
0].Line.Color = "Red";
        
//给定series系列的名字
        InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimSeriesNames, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, "");
        
//给定分类
        InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, strXdata);
        
//给定值
        InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strYdata);
        ChDataLabels mytb 
= InsertChart.SeriesCollection[0].DataLabelsCollection.Add();
        
//mytb.HasPercentage = true;  //显示百分比
        mytb.HasValue = true;   //显示值
        mytb.Font.Color = "Blue";
        mytb.Font.Name 
= "Times New Roman";
        
string tempName = "Sum2";
        
string strRelativePath = "./" + tempName + ".gif";
        
string strAbsolutePath = (Server.MapPath(".")) + "/" + tempName + ".gif";
        laySpace.ExportPicture(strAbsolutePath, 
"GIF"800400);
        
string strImageTag = "<IMG SRC='" + strRelativePath + "?ID=" + MathClass.GetRandom(6+ "'/>"//给图片路径添加一个随即参数,解决图片不刷新的问题。
        phImg.Controls.Add(new LiteralControl(strImageTag));


    }

 

3、做折线图产品销量走势图

 

  private   void  BindCard(DataTable dt)
    
{
        
string strSeriesName = " 销售额走势图";
        
//存放月
        string[] MonNum = new string[1000];
        
//存放数据
        string[] MonCount = new string[1000];
        
decimal total = 0.0M;
        
string strXdata = String.Empty;
        
string strYdata = String.Empty;
        
//为数组赋值
        for (int i = 0; i < dt.Rows.Count; i++)
        
{
          
            MonCount[i] 
= dt.Rows[i][2].ToString();
            
if (string.IsNullOrEmpty(MonCount[i]))
            
{
                strYdata 
+= "0 ";
            }

            
else
            
{
                strYdata 
+= MonCount[i] + " ";
            }


            MonNum[i] 
= dt.Rows[i][1].ToString();
            strXdata 
+= MonNum[i] + " ";
        }

         
//创建ChartSpace对象来放置图表
        ChartSpace laySpace = new ChartSpaceClass();
        
//在ChartSpace对象中添加图表
        ChChart InsertChart = laySpace.Charts.Add(0);
        InsertChart.Type 
= ChartChartTypeEnum.chChartTypeLine;//折线图
        InsertChart.HasTitle = true;//为图表添加标题
        InsertChart.Title.Caption = _Title;//标题名称
        InsertChart.Axes[0].HasTitle = false;
        InsertChart.Axes[
1].HasTitle = false;
        InsertChart.SeriesCollection.Add(
0);
        InsertChart.SeriesCollection[
0].Line.Color = "Red";
        InsertChart.SeriesCollection[
0].SetData(ChartDimensionsEnum.chDimSeriesNames, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, "");
        InsertChart.SeriesCollection[
0].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, strXdata);
        InsertChart.SeriesCollection[
0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strYdata);

        
string tempName = "Sum3";
        
string strRelativePath = "./" + tempName + ".gif";
        
string strAbsolutePath = (Server.MapPath(".")) + "/" + tempName + ".gif";
        laySpace.ExportPicture(strAbsolutePath, 
"GIF"800400);
        
string strImageTag = "<IMG SRC='" + strRelativePath + "?ID=" + MathClass.GetRandom(6+ "'/>";
        phImg.Controls.Add(
new LiteralControl(strImageTag));
        GridView1.DataSource 
= dt;
        GridView1.DataBind();

    }

 

 

在使用代码前请先添加COM组件“Microsoft.Office.Interop.Owc11”的引用 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值