封装OWC做统计图

using  System;
using  System.Data;
using  System.Text;
using  System.Drawing;

namespace  test.OWCC
{
    
///   <summary>
    
///  封装OWC做统计图
    
///   </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
    }
}

转载于:https://www.cnblogs.com/Athrun/archive/2008/05/20/1203138.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值