code paste

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     } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

huajian2008

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值