|
以下是代码片段:
封装OWC做统计图形 using System; using System.Data; using System.Text; using System.Drawing;
namespace doHope.OWCC { /**//// <summary> /// 封装OWC做统计图 /// by cherish58 /// </summary> public class OWCChart { 属性#region 属性
private string _phaysicalimagepath; private string _title; private string _seriesname; private int _picwidth; private int _pichight; private DataTable _datasource; private string _strdatasource; private string strCategory; private string strValue;
/**//// <summary> /// 图片存放路径 /// </summary> public string PhaysicalImagePath { set{_phaysicalimagepath=value;} get{return _phaysicalimagepath;} }
public string Title { set{_title=value;} get{return _title;} }
public string SeriesName { set{_seriesname=value;} get{return _seriesname;} }
public int PicWidth { set{_picwidth=value;} get{return _picwidth;} }
public int PicHight { set{_pichight=value;} get{return _pichight;} }
/**//// <summary> /// 传DataTable类型 /// </summary> public DataTable DataSource { set { _datasource=value; strCategory=GetColumnsStr(_datasource); strValue=GetValueStr(_datasource); } get{return _datasource;} }
/**//// <summary> /// 传字符串,分隔用分号(;) /// </summary> public string strDataSource { set { _strdatasource = value ; strCategory=GetColumnsStr(_strdatasource); strValue=GetValueStr(_strdatasource); } get{return _strdatasource;} }
private string GetColumnsStr(DataTable dt) { StringBuilder strList=new StringBuilder(); foreach(DataRow r in dt.Rows) { strList.Append(r[0].ToString()+'\t'); } return strList.ToString(); }
private string GetColumnsStr(string coldt) { return coldt == "" ? "" : coldt.Substring(0,coldt.IndexOf(";")) ; }
private string GetValueStr(DataTable dt) { StringBuilder strList=new StringBuilder(); foreach(DataRow r in dt.Rows) { strList.Append(r[1].ToString()+'\t'); } return strList.ToString(); }
private string GetValueStr(string rowdt) { return rowdt == "" ? "" : rowdt.Substring(rowdt.LastIndexOf(";")+1) ; }
#endregion
构造函数#region 构造函数
/**//// <summary> /// 0 /// </summary> public OWCChart() { // }
/**//// <summary> /// 1 /// </summary> /// <param name="PhaysicalImagePath"></param> /// <param name="Title"></param> /// <param name="SeriesName"></param> /// <param name="PicWidth"></param> /// <param name="PicHight"></param> public OWCChart(string PhaysicalImagePath,string Title,string SeriesName,int PicWidth,int PicHight) { _phaysicalimagepath=PhaysicalImagePath; _title=Title; _seriesname=SeriesName; _pichight = PicHight ; _picwidth = PicWidth ; }
/**//// <summary> /// 2 /// </summary> /// <param name="Title"></param> /// <param name="SeriesName"></param> /// <param name="PicWidth"></param> /// <param name="PicHight"></param> public OWCChart(string Title,string SeriesName,int PicWidth,int PicHight) { _title=Title; _seriesname=SeriesName; _pichight = PicHight ; _picwidth = PicWidth ; }
#endregion 柱形图#region 柱形图
/**//// <summary> /// 柱形图 /// </summary> /// <param name="Xname">X轴描述</param> /// <param name="Yname">Y轴描述</param> /// <param name="IfExportToFile">若把图像输出到文件夹则为true,否则为false</param> /// <returns>若把图像输出到文件夹返回生成的图像名称,否则返回Bitmap类型</returns> public Object CreateColumn(string Xname,string Yname,bool IfExportToFile,bool If3D) { OWC11.ChartSpace objCSpace = new OWC11.ChartSpaceClass() ;//创建ChartSpace对象来放置图表 OWC11.ChChart objChart = objCSpace.Charts.Add(0) ;//在ChartSpace对象中添加图表,Add方法返回chart对象 //指定图表的类型。类型由OWC11.ChartChartTypeEnum枚举值得到 if(If3D == true) objChart.Type = OWC11.ChartChartTypeEnum.chChartTypeColumnClustered3D ; else objChart.Type = OWC11.ChartChartTypeEnum.chChartTypeColumnClustered ; //指定图表是否需要图例 objChart.HasLegend = true ; //标题 objChart.HasTitle = true; objChart.Title.Caption= _title; objChart.Title.Font.Bold=true; // objChart.Title.Font.Color="blue";
样式设置#region 样式设置
//旋转 // objChart.Rotation = 145;//表示指定三维图表的旋转角度 // objChart.Inclination = 10;//表示指定三维图表的视图斜率。有效范围为 -90 到 90 // // //背景颜色 // objChart.PlotArea.Interior.Color = "red"; // // //底座颜色 // objChart.PlotArea.Floor.Interior.Color = "green"; // objChart.Overlap = 50;//单个类别中标志之间的重叠量
#endregion //x,y轴的图示说明 objChart.Axes[0].HasTitle = true; objChart.Axes[0].Title.Caption = "X : "+Xname+""; objChart.Axes[1].HasTitle = true; objChart.Axes[1].Title.Caption = "Y : "+Yname+"";
//添加一个series OWC11.ChSeries ThisChSeries = objChart.SeriesCollection.Add(0);
//给定series的名字 ThisChSeries.SetData(OWC11.ChartDimensionsEnum.chDimSeriesNames, OWC11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),SeriesName); //给定分类 ThisChSeries.SetData(OWC11.ChartDimensionsEnum.chDimCategories, OWC11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),strCategory); //给定值 ThisChSeries.SetData(OWC11.ChartDimensionsEnum.chDimValues, OWC11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),strValue);
OWC11.ChDataLabels dl=objChart.SeriesCollection[0].DataLabelsCollection.Add(); dl.HasValue=true; // dl.Position=OWC11.ChartDataLabelPositionEnum.chLabelPositionOutsideEnd; // string filename=DateTime.Now.ToString("yyyyMMddHHmmssff")+".gif";
if(IfExportToFile == true) { string filename = "temp.gif" ; string strAbsolutePath = _phaysicalimagepath + "\\"+filename; objCSpace.ExportPicture(strAbsolutePath, "GIF", _picwidth, _pichight); //输出成GIF文件.
return filename ; } else { string tmp = "Tmp" ; objCSpace.ExportPicture(tmp,"GIF",_picwidth,_pichight) ; Bitmap bm = new Bitmap(tmp,true) ;
return bm ; } }
#endregion
线性图#region 线性图
/**//// <summary> /// 线性图 /// </summary> /// <param name="Xname">X轴描述</param> /// <param name="Yname">Y轴描述</param> /// <param name="IfExportToFile">若把图像输出到文件夹则为true,否则为false</param> /// <returns>若把图像输出到文件夹返回生成的图像名称,否则返回Bitmap类型</returns> public Object CreateLine(string Xname,string Yname,bool IfExportToFile,bool If3D) { OWC11.ChartSpace objCSpace = new OWC11.ChartSpaceClass() ;//创建ChartSpace对象来放置图表 OWC11.ChChart objChart = objCSpace.Charts.Add(0) ;//在ChartSpace对象中添加图表,Add方法返回chart对象 //指定图表的类型。类型由OWC11.ChartChartTypeEnum枚举值得到 if(If3D == true) objChart.Type = OWC11.ChartChartTypeEnum.chChartTypeLine3D ; else objChart.Type = OWC11.ChartChartTypeEnum.chChartTypeLine ; //指定图表是否需要图例 objChart.HasLegend = true ; //标题 objChart.HasTitle = true; objChart.Title.Caption= _title; objChart.Title.Font.Bold=true; // objChart.Title.Font.Color="blue";
样式设置#region 样式设置
//旋转 // objChart.Rotation = 145;//表示指定三维图表的旋转角度 // objChart.Inclination = 10;//表示指定三维图表的视图斜率。有效范围为 -90 到 90 // // //背景颜色 // objChart.PlotArea.Interior.Color = "red"; // // //底座颜色 // objChart.PlotArea.Floor.Interior.Color = "green"; // objChart.Overlap = 50;//单个类别中标志之间的重叠量
#endregion //x,y轴的图示说明 objChart.Axes[0].HasTitle = true; objChart.Axes[0].Title.Caption = "X : "+Xname+""; objChart.Axes[1].HasTitle = true; objChart.Axes[1].Title.Caption = "Y : "+Yname+"";
//添加一个series OWC11.ChSeries ThisChSeries = objChart.SeriesCollection.Add(0);
//给定series的名字 ThisChSeries.SetData(OWC11.ChartDimensionsEnum.chDimSeriesNames, OWC11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),SeriesName); //给定分类 ThisChSeries.SetData(OWC11.ChartDimensionsEnum.chDimCategories, OWC11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),strCategory); //给定值 ThisChSeries.SetData(OWC11.ChartDimensionsEnum.chDimValues, OWC11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),strValue);
OWC11.ChDataLabels dl=objChart.SeriesCollection[0].DataLabelsCollection.Add(); dl.HasValue=true; // dl.Position=OWC11.ChartDataLabelPositionEnum.chLabelPositionOutsideEnd;
// string filename=DateTime.Now.ToString("yyyyMMddHHmmssff")+".gif";
if(IfExportToFile == true) { string filename = "temp.gif" ; string strAbsolutePath = _phaysicalimagepath + "\\"+filename; objCSpace.ExportPicture(strAbsolutePath, "GIF", _picwidth, _pichight); //输出成GIF文件.
return filename ; } else { string tmp = "Tmp" ; objCSpace.ExportPicture(tmp,"GIF",_picwidth,_pichight) ; Bitmap bm = new Bitmap(tmp,true) ;
return bm ; } }
#endregion
条形图(横向)#region 条形图(横向)
/**//// <summary> /// 条形图(横向) /// </summary> /// <param name="Xname"></param> /// <param name="Yname"></param> /// <param name="IfExportToFile"></param> /// <returns></returns> public Object CreateBar(string Xname,string Yname,bool IfExportToFile,bool If3D) { OWC11.ChartSpace objCSpace = new OWC11.ChartSpaceClass();//创建ChartSpace对象来放置图表 OWC11.ChChart objChart = objCSpace.Charts.Add(0);//在ChartSpace对象中添加图表,Add方法返回chart对象 //指定图表的类型。类型由OWC.ChartChartTypeEnum枚举值得到 if(If3D == true) objChart.Type=OWC11.ChartChartTypeEnum.chChartTypeBarClustered3D ; else objChart.Type=OWC11.ChartChartTypeEnum.chChartTypeBarClustered; //指定图表是否需要图例 objChart.HasLegend = true; //标题 objChart.HasTitle = true; objChart.Title.Caption= _title; objChart.Title.Font.Bold=true; // objChart.Title.Font.Color="blue";
样式设置#region 样式设置
//旋转 // objChart.Rotation = 145;//表示指定三维图表的旋转角度 // objChart.Inclination = 10;//表示指定三维图表的视图斜率。有效范围为 -90 到 90
//背景颜色 // objChart.PlotArea.Interior.Color = "red";
//底座颜色 // objChart.PlotArea.Floor.Interior.Color = "green"; // objChart.Overlap = 50;//单个类别中标志之间的重叠量
#endregion //x,y轴的图示说明 objChart.Axes[0].HasTitle = true; objChart.Axes[0].Title.Caption = "X : "+Xname+""; objChart.Axes[1].HasTitle = true; objChart.Axes[1].Title.Caption = "Y : "+Yname+"";
//添加一个series OWC11.ChSeries ThisChSeries = objChart.SeriesCollection.Add(0);
//给定series的名字 ThisChSeries.SetData(OWC11.ChartDimensionsEnum.chDimSeriesNames, OWC11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),SeriesName); //给定分类 ThisChSeries.SetData(OWC11.ChartDimensionsEnum.chDimCategories, OWC11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),strCategory); //给定值 ThisChSeries.SetData(OWC11.ChartDimensionsEnum.chDimValues, OWC11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),strValue);
OWC11.ChDataLabels dl=objChart.SeriesCollection[0].DataLabelsCollection.Add(); dl.HasValue=true; // dl.Position=OWC11.ChartDataLabelPositionEnum.chLabelPositionOutsideEnd; // string filename=DateTime.Now.ToString("yyyyMMddHHmmssff")+".gif";
if(IfExportToFile == true) { string filename = "temp.gif" ; string strAbsolutePath = _phaysicalimagepath + "\\"+filename; objCSpace.ExportPicture(strAbsolutePath, "GIF", _picwidth, _pichight); //输出成GIF文件.
return filename ; } else { string tmp = "Tmp" ; objCSpace.ExportPicture(tmp,"GIF",_picwidth,_pichight) ; Bitmap bm = new Bitmap(tmp,true) ;
return bm ; } }
#endregion
饼图#region 饼图
/**//// <summary> /// 饼图 /// </summary> /// <param name="IfExportToFile"></param> /// <returns></returns> public Object CreatePie(bool IfExportToFile,bool If3D) { OWC11.ChartSpace objCSpace = new OWC11.ChartSpaceClass();//创建ChartSpace对象来放置图表 OWC11.ChChart objChart = objCSpace.Charts.Add(0);//在ChartSpace对象中添加图表,Add方法返回chart对象 //指定图表的类型 if(If3D == true) objChart.Type=OWC11.ChartChartTypeEnum.chChartTypePie3D ; else objChart.Type=OWC11.ChartChartTypeEnum.chChartTypePie;
//指定图表是否需要图例 objChart.HasLegend = true; //标题 objChart.HasTitle = true; objChart.Title.Caption= _title; objChart.Title.Font.Bold = true ; //添加一个series OWC11.ChSeries ThisChSeries = objChart.SeriesCollection.Add(0);
//给定series的名字 ThisChSeries.SetData(OWC11.ChartDimensionsEnum.chDimSeriesNames, OWC11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),SeriesName); //给定分类 ThisChSeries.SetData(OWC11.ChartDimensionsEnum.chDimCategories, OWC11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),strCategory); //给定值 ThisChSeries.SetData(OWC11.ChartDimensionsEnum.chDimValues, OWC11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),strValue);
//表示系列或趋势线上的单个数据标志 OWC11.ChDataLabels dl=objChart.SeriesCollection[0].DataLabelsCollection.Add(); dl.HasValue=true; dl.HasPercentage=true; //图表绘图区的图例放置在右侧。 // dl.Position=OWC11.ChartDataLabelPositionEnum.chLabelPositionRight; // string filename=DateTime.Now.Ticks.ToString()+".gif"; if(IfExportToFile == true) { string filename = "temp.gif" ; string strAbsolutePath = _phaysicalimagepath + "\\"+filename; objCSpace.ExportPicture(strAbsolutePath, "GIF", _picwidth, _pichight); //输出成GIF文件.
return filename ; } else { string tmp = "Tmp" ; objCSpace.ExportPicture(tmp,"GIF",_picwidth,_pichight) ; Bitmap bm = new Bitmap(tmp,true) ;
return bm ; } }
#endregion } } |