Louistin
            前段时间看见一位牛人写的关于如何在Web页面中做出各式各样的图表,的确不得不佩服其功能的强大,几乎涵盖所有的图标样式。在此转载下他的组件代码,供大家欣赏。
 /**//// <summary>
    
/// 使用 OWCChart11 生成各种图表
    
/// 作者 焦军康
    
/// 日期 2006-7-5
    
/// </summary>

    public class OWCChart11
    
{
        
属性

        
枚举类型

        
构造函数

        
public bool Create()
        
{
            
//声明对象
            OWC11.ChartSpace ThisChart = new  OWC11.ChartSpaceClass();
            OWC11.ChChart ThisChChart  
= ThisChart.Charts.Add(0);
            OWC11.ChSeries ThisChSeries 
= ThisChChart.SeriesCollection.Add(0);
            
            
//显示图例
            ThisChChart.HasLegend = true;

            
//显示标题选项
            ThisChChart.HasTitle = true;
            ThisChChart.Title.Font.Name
="黑体";
            ThisChChart.Title.Font.Size
=14;
            ThisChChart.Title.Caption 
= m_Title;//from

            
//x,y轴说明
            
//x
            ThisChChart.Axes[0].HasTitle=true;
            ThisChChart.Axes[
0].Title.Font.Name="黑体";
            ThisChChart.Axes[
0].Title.Font.Size=12;
            ThisChChart.Axes[
0].Title.Caption=m_AxesXTitle;

            ThisChChart.Axes[
1].HasTitle=true;
            ThisChChart.Axes[
1].Title.Font.Name="黑体";
            ThisChChart.Axes[
1].Title.Font.Size=12;
            ThisChChart.Axes[
1].Title.Caption=m_AxesYTitle;

            
//图表类型
            ThisChChart.Type=(OWC11.ChartChartTypeEnum) m_Type;

            
//旋转
            ThisChChart.Rotation  = 360;
            ThisChChart.Inclination 
= 10;
            
//背景颜色
            ThisChChart.PlotArea.Interior.Color = "white";
            
//底座颜色
            ThisChChart.PlotArea.Floor.Interior.Color = "blue";
            
            
//ThisChChart.Overlap = 50;

            
//给定series的名字
            ThisChSeries.SetData(OWC11.ChartDimensionsEnum.chDimSeriesNames,OWC11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),m_SeriesName);
            
//给定分类
            ThisChSeries.SetData(OWC11.ChartDimensionsEnum.chDimCategories,OWC11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),m_Category);
            
//给定值
            ThisChSeries.SetData(OWC11.ChartDimensionsEnum.chDimValues,OWC11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),m_Value);

            OWC11.ChDataLabels dl
=ThisChChart.SeriesCollection[0].DataLabelsCollection.Add();   
            dl.HasValue
=true;
            
//dl.HasPercentage=true;   
            
//导出图像文件
            try
            
{       
                
if(m_FileName==null||m_FileName=="")
                
{
                    m_FileName
=DateTime.Now.ToString("yyyyMMddHHmmssff")+".gif";//生成图片名称
                }

                ThisChart.ExportPicture(m_SavePath
+"\\"+m_FileName,"gif",m_PicWidth,m_PicHeight);
                
return true;
            }
            
            
catch(Exception ee)                   
            
{
                
return false;                              
            }

            
return false;
        }

        
    }

以下是组件调用情况,先设置图表的样式与规格:
 string strSavePath = @"D:\Chart";
        
string strSeriesName = "消费金额";
        
string strTitle = "消费状况";
        
int intChartType = 7;
        
string strAxesXTitle = "日期";
        
string strAxesYTitle = "花费";
        
int intPicWidth = 400;
        
int intPicHeight = 300;
        OWCChart11 owcChart 
= new MyServant.OWCChart11(strSavePath, strSeriesName, strTitle, intChartType,
                                                                 strAxesXTitle, strAxesYTitle, intPicWidth, intPicHeight);

接下来与数据库连接,将查询出来的数据显示为图表:
        string connectionstring = "uid=sa;password=password;database=PersonalManagement;server=DL2007";
        SqlConnection Conn 
= new SqlConnection(connectionstring);
        Conn.Open();
        
string sql = "select Cost, ConsumeDate from PersonalManagement.dbo.consume where memberid like \'Darren Lau\'";
        SqlDataAdapter _Da 
= new SqlDataAdapter(sql, Conn);
        DataSet dsChartSource 
= new DataSet();
        DataTable dtlChartSource 
= new DataTable();
        _Da.Fill(dsChartSource, 
"tmp_table");
        dtlChartSource 
= dsChartSource.Tables["tmp_table"];
        owcChart.DataSource 
= dtlChartSource;
        _Da.Dispose();
        dsChartSource.Dispose();
        Conn.Close();
        
if (owcChart.Create())
        
{
            imagechart.ImageUrl 
= strSavePath + "\\" + owcChart.FileName;
        }

        
else
        
{
            
return;
        }
        注意:前台Web页面中必须有一个Image控件来显示我们制成的图表。其缘由请参看关于OWC11的相关文档,这里不作介绍

分类:

技术点:

相关文章: