一个OWC开发范例

最近在开发一个报告生成系统,其中使用到了.NET图表第三方控件。以下是使用OWC9画一个BAR图的范例:

public class ChartClass
 {
  public ChartClass()
  {

  }

public void GetChart(string category,string value1,string value2,string title,System.Web.HttpServerUtility Server,System.Web.UI.WebControls.PlaceHolder ChartHolder,string filename,string sdate,string edate,bool y)
  {
   OWC.ChartSpace objCSpace = new OWC.ChartSpaceClass ();
   OWC.WCChart objChart = objCSpace.Charts.Add (0);
   objChart.Type = OWC.ChartChartTypeEnum.chChartTypeBarStacked;  //图表类型
   objChart.HasLegend = true;  
   objChart.HasTitle = true;
   if(y==true)
    objChart.Title.Caption= title + " 前十二个月广告主花费 (" + sdate + " 至 " + edate + ")";
   else
    objChart.Title.Caption= title + " 上个月广告主花费 (" + sdate + " 至 " + edate + ")";
   objChart.Axes[0].HasTitle = false;
   objChart.Axes[1].HasTitle = false;
   
   objChart.SeriesCollection.Add(0);
   objChart.SeriesCollection[0].SetData (OWC.ChartDimensionsEnum.chDimSeriesNames, (int)OWC.ChartSpecialDataSourcesEnum.chDataLiteral, "报纸");
   objChart.SeriesCollection[0].SetData (OWC.ChartDimensionsEnum.chDimCategories, (int)OWC.ChartSpecialDataSourcesEnum.chDataLiteral, category);
   objChart.SeriesCollection[0].SetData (OWC.ChartDimensionsEnum.chDimValues,(int)OWC.ChartSpecialDataSourcesEnum.chDataLiteral, value1);
   objChart.SeriesCollection.Add(1);
   objChart.SeriesCollection[1].SetData (OWC.ChartDimensionsEnum.chDimSeriesNames, (int)OWC.ChartSpecialDataSourcesEnum.chDataLiteral, "杂志");
   objChart.SeriesCollection[1].SetData (OWC.ChartDimensionsEnum.chDimCategories, (int)OWC.ChartSpecialDataSourcesEnum.chDataLiteral, category);
   objChart.SeriesCollection[1].SetData (OWC.ChartDimensionsEnum.chDimValues,(int)OWC.ChartSpecialDataSourcesEnum.chDataLiteral, value2);

   object ob = "#66FF66";
   objChart.SeriesCollection[0].Interior.set_Color(ref ob);  //不知道为什么,VB里,可以使用Interior.Color="#66FF66"来直接设置颜色,而C#里必须使用set_Color方法,而且参数必须是ref object。
   objChart.SeriesCollection[0].Border.set_Color(ref ob);
   ob="#6699ff";
   objChart.SeriesCollection[1].Interior.set_Color(ref ob);
   objChart.SeriesCollection[1].Border.set_Color(ref ob);
   objChart.SeriesCollection[0].Border.set_Weight(OWC.LineWeightEnum.owcLineWeightThin);
   objChart.SeriesCollection[1].Border.set_Weight(OWC.LineWeightEnum.owcLineWeightThin);
   
   ob="#FFFFFF";
   objChart.PlotArea.Border.set_Color(ref ob);
   objChart.PlotArea.Interior.set_Color(ref ob);
   

   objChart.Axes[0].Font.set_Name("Arial");
   objChart.Axes[0].Font.set_Size(9);
   objChart.Axes[1].MajorTickMarks=OWC.ChartTickMarkEnum.chTickMarkInside;
   objChart.Axes[1].MinorTickMarks=OWC.ChartTickMarkEnum.chTickMarkNone;
   ob="#CCCCCC";
   objChart.Axes[0].MajorGridlines.Line.set_Color(ref ob);
   

   objChart.Axes[1].Font.set_Name("宋体");
   objChart.Axes[1].Font.set_Size(9);

//   objChart.SeriesCollection[0].DataLabelsCollection.Add();
//   objChart.SeriesCollection[1].DataLabelsCollection.Add();
//   objChart.SeriesCollection[0].DataLabelsCollection[0].HasValue=true;
//   ob="red";
//   objChart.SeriesCollection[0].DataLabelsCollection[0].Font.set_Color(ref ob);
//   objChart.SeriesCollection[1].DataLabelsCollection[0].Font.set_Color(ref ob);
//   objChart.SeriesCollection[0].DataLabelsCollection[0].Position=OWC.ChartDataLabelPositionEnum.chLabelPositionOutsideBase;
//   objChart.SeriesCollection[1].DataLabelsCollection[0].Position=OWC.ChartDataLabelPositionEnum.chLabelPositionOutsideEnd;

//上面几段注释掉的内容,是在数据柱上显示数据值的设置代码


   objChart.Legend.Font.set_Name("宋体");
   objChart.Legend.Font.set_Size(9);

   objChart.Title.Font.set_Name("宋体");
   objChart.Title.Font.set_Size(11);

   


   string strAbsolutePath = Server.MapPath(".")+ @"/TempFiles/" + filename;  //文件保存的位置
   objCSpace.ExportPicture(strAbsolutePath, "GIF", 600, 350);  //文件的分辨率其他属性
   string strRelativePath = "./TempFiles/" + filename;
   string strImageTag = "<IMG SRC='" + strRelativePath + "'/>";
   ChartHolder.Controls.Add(new LiteralControl(strImageTag));  //将图片填充到PlaceHolder对象ChartHoler中。
  }
 }


最后显示的图表效果如下:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值