一个很强大的ASP.NET画图控件(一)

一个很强大的ASP.NET画图控件(一)

Posted on 2008-09-07 18:23 key_sky 阅读(981) 评论(2)   编辑 收藏 网摘 所属分类: asp.net

      与直接用GDI+绘图相比较,这个dotnetcharting控件写好的很多样式,运用起来更加方便。在GDI+知识不是很熟悉的时候,可以考虑用这个控件来进行绘图,让报表更加完美。

     控件下载地址:http://www.dotnetCHARTING.com

    下面介绍一些我在使用过程中处理的一些图形。这个控件功能十分强大,有待实践使用。

     一个简单的DEMO:

    定义一个简单的类库,来装载主要的参数:

 

 

 

 一些主要的图形要素在上面的类中已经有了文字说明。这里说明我们需要创建一个装载生成图片的文件夹也就是类种的"temp"

然后在一个aspx页面拖入dotnetcharing控件。

主要事件代码如下:

 

 


protected void Button1_Click(object sender, EventArgs e)
{
sql
= TextBox_sql.Text.Trim();
connstr
= TextBox_connstr.Text.Trim();
if (sql == "" || sql.Equals(""))
{
sql
= "select top 10 ws.wellbzid,ws.xtxl,ws.dmxl,ws.djxl,ws.cdxtxl,ws.jxxl,ws.cygbfxl,ws.ygrhdl from well_base as wb inner join well_syseffect as ws on wb.wellbzid = ws.wellbzid and (ws.well_time >='2007-03-19 00:00:00') and (ws.well_time <='2007-11-19 23:59:59') order by ws.well_time desc ";
}
if (connstr == "" || connstr.Equals(""))
{
connstr
= "server=localhost;database=ydyjjl;user id=sa;password=sa";
}
title
= this.TextBox_title.Text.Trim();
yname
= this.TextBox_yname.Text.Trim();
Chart__WebData.Drawing_Chart(Chart1, sql, connstr,
this.ChartTypeDDL.SelectedValue, this.SeriesTypeDDL.SelectedValue, "800x600", "temp", title, yname, this.ShowValues.Checked, this.show3D.Checked,this.CheckBox_LegendBox.Checked, this.Average.Checked, this.Max.Checked, this.Min.Checked);
DataTable ds
= Chart__WebData.CreateDataTable(sql, connstr);
GridView1.DataSource
= ds;
GridView1.DataBind();
//select wellbzid,dym from well_base

}

 

我们运行后图片如下:

 

这里主要介绍些简单的共性功能以及效果展示,下次再介绍些这个控件其他一些强大的绘图特效,以及使用过程中的一些技巧。


using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using dotnetCHARTING;
using System.Drawing;
using System.Data.SqlClient;
/// <summary>
/// Chart__WebData 的摘要说明
/// </summary>

public class Chart__WebData
{
/// 功能:传入并设置chart对象的部分属性
/// 输入参数: chart:Chart对象; sql:传入的SQL语句; connstr:连接数据库字符串; chart_Type:Chart对象的图型类型
/// seriesType:Chart对象的曲线的类型; chartSize:Chart对象的图型设置,例800x600; TempDirectory:Chart图型图片存储位置
/// titleName:Chart图型的标题设置; yAxisName:图型Y轴名字 ShowValue:是否在图型中显示数值; use3D:是否使用3D效果
/// LegendBox_show:是否在图的右侧显示标题框 average_show:是否在图中显示平均值 maximum_show:是否在图中显示最大值
/// minimum_show:是否在图中显示最小值
///
///
/// 版本号:1.0
public static void Drawing_Chart(Chart chart,string sql, string connstr, string chart_Type, string seriesType, string chartSize,
string TempDirectory, string titleName, string yAxisName, bool ShowValue, bool use3D,bool LegendBox_show,
bool average_show, bool maximum_show, bool minimum_show)
{
ChartType_values(chart,chart_Type);
SeriesType_values(chart,seriesType);
chart.Size
= chartSize;
chart.TempDirectory
= TempDirectory;
chart.Title
= titleName;
chart.Use3D
= use3D;
chart.AutoNameLabels
= false;
if (!LegendBox_show)
{
chart.LegendBox.Position
= LegendBoxPosition.None;
}
chart.DefaultSeries.DefaultElement.ShowValue
= ShowValue;
Axis replicaAxis
= chart.YAxis.Calculate(yAxisName, true, dotnetCHARTING.Orientation.Left);
Average_values(replicaAxis, average_show);
Max_values(replicaAxis, maximum_show);
Min_values(replicaAxis, minimum_show);
chart.AxisCollection.Add(replicaAxis);
SeriesCollection mySC
= getRandomData(CreateDataTable(sql, connstr));
chart.SeriesCollection.Add(ColorSet(mySC));
}
//制图类型选择处理
public static void ChartType_values(Chart chart, string chart_Type)
{
switch (chart_Type)
{
case "柱型正常":
chart.Type
= ChartType.Combo;
break;
case "柱型侧边":
chart.Type
= ChartType.ComboHorizontal;
break;
case "柱型水平":
chart.Type
= ChartType.ComboSideBySide;
break;
case "饼型单":
chart.Type
= ChartType.Pie;
break;
case "饼型多":
chart.Type
= ChartType.Pies;
break;
case "环型单":
chart.Type
= ChartType.Donut;
break;
case "环型多":
chart.Type
= ChartType.Donuts;
break;
case "雷达单":
chart.Type
= ChartType.Radar;
break;
case "雷达多":
chart.Type
= ChartType.Radars;
break;
case "线条":
chart.Type
= ChartType.Scatter;
break;
case "Combo":
chart.Type
= ChartType.Combo;
break;
case "ComboSideBySide":
chart.Type
= ChartType.ComboHorizontal;
break;
case "ComboHorizontal":
chart.Type
= ChartType.ComboSideBySide;
break;
case "Single Pie":
chart.Type
= ChartType.Pie;
break;
case "Multi pie":
chart.Type
= ChartType.Pies;
break;
case "Single Donut":
chart.Type
= ChartType.Donut;
break;
case "Multi Donut":
chart.Type
= ChartType.Donuts;
break;
case "Single Radar":
chart.Type
= ChartType.Radar;
break;
case "Multi Radar":
chart.Type
= ChartType.Radars;
break;
case "Scatter":
chart.Type
= ChartType.Scatter;
break;
case "Bubble":
chart.Type
= ChartType.Bubble;
break;
default:
chart.Type
= ChartType.Combo;
break;
}
}
//样式类型选择处理
public static void SeriesType_values(Chart chart, string seriesType)
{
switch (seriesType)
{
case "柱体":
chart.DefaultSeries.Type
= SeriesType.Column;
break;
case "圆柱":
chart.DefaultSeries.Type
= SeriesType.Cylinder;
break;
case "记号":
chart.DefaultSeries.Type
= SeriesType.Marker;
break;
case "连线":
chart.DefaultSeries.Type
= SeriesType.Line;
break;
case "区域面积":
chart.DefaultSeries.Type
= SeriesType.AreaLine;
break;
case "曲线":
chart.DefaultSeries.Type
= SeriesType.Spline;
break;
case "Column":
chart.DefaultSeries.Type
= SeriesType.Column;
break;
case "Cylinder":
chart.DefaultSeries.Type
= SeriesType.Cylinder;
break;
case "Marker":
chart.DefaultSeries.Type
= SeriesType.Marker;
break;
case "Line":
chart.DefaultSeries.Type
= SeriesType.Line;
break;
case "AreaLine":
chart.DefaultSeries.Type
= SeriesType.AreaLine;
break;
case "Spline":
chart.DefaultSeries.Type
= SeriesType.Spline;
break;
default:
chart.DefaultSeries.Type
= SeriesType.Column;
break;
}
}

//数据显示
public static SeriesCollection getRandomData(DataTable dt)
{
SeriesCollection SC
= new SeriesCollection();
String idname
= null;
//Random myR = new Random(1);
for (int a = 0; a < dt.Rows.Count; a++)
{
Series s
= new Series();
s.Name
= idname + a.ToString();
for (int b = 1; b < dt.Columns.Count; b++)
{
idname
= dt.Columns[b].ColumnName;

Element e
= new Element();
e.Name
= idname;
double bb = 0;
try
{
bb
= double.Parse(dt.Rows[a][b].ToString());
}
catch (Exception)
{
bb
= 0;
}
e.YValue
= bb;
s.Elements.Add(e);
}
idname
= dt.Rows[a][0].ToString();
s.Name
= idname;
SC.Add(s);
}
return SC;
}
//设置线的颜色
public static SeriesCollection ColorSet(SeriesCollection SC)
{
SC[
0].DefaultElement.Color = Color.FromArgb(49, 255, 49);
//SC[1].DefaultElement.Color = Color.FromArgb(255, 255, 0);
//SC[2].DefaultElement.Color = Color.FromArgb(255, 99, 49);
//SC[3].DefaultElement.Color = Color.FromArgb(0, 156, 255);
//SC[4].DefaultElement.Color = Color.FromArgb(255, 156, 255);
return SC;
}
//各种函数显示
public static Axis Average_values(Axis replicaAxis, bool average_show)
{
if (average_show)
{
replicaAxis.AddCalculatedTick(
"平均值: %Value", Calculation.Average);
}
return replicaAxis;
}
public static Axis Max_values(Axis replicaAxis, bool maximum_show)
{
if (maximum_show)
{
replicaAxis.AddCalculatedTick(
"最大值: %Value", Calculation.Maximum);
}
return replicaAxis;
}
public static Axis Min_values(Axis replicaAxis, bool minimum_show)
{
if (minimum_show)
{
replicaAxis.AddCalculatedTick(
"最小值: %Value", Calculation.Minimum);
}
return replicaAxis;
}
//提取数据
public static DataTable CreateDataTable(string sql, string connstr)
{
DataTable dt
= new DataTable();
SqlConnection conn
= new SqlConnection(connstr);
SqlDataAdapter adapter
= new SqlDataAdapter();
adapter.SelectCommand
= new SqlCommand(sql, conn);
adapter.Fill(dt);
return dt;
}

public static void Drawing_Chart(Chart chart, string sql,string connstr)
{
Drawing_Chart(chart, sql, connstr,
"", "", "800x600", "temp", "", "", false, false, false, false, false,false);
}
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值