c#(winform)使用mschart控件制作图表-----问题及解决
2010-01-29 21:00
781 查看
最近需要将电能值与时间的表用图表显示,查看vs2005(.net2.0)居然没有图表控件,提说。net3.5添加了图表chart控件,但是现在环境不能改变,只能寻求他法。
在COM控件集中有一个microsoft chart control,version6.0(oledb),简单地查了相关资料,发现可用,比较简单基础的一个控件,因为图表功能需求很简单,所以也没想什么专业图表控件。
首先,新建一个windows应用程序项目,一个简单的form。在左侧工具箱右键出现的选项中选择"选择项",在com集中找microsoft chart control,version6.0(oledb),添加。此时左侧工具箱会出现该控件,
将该控件拖入form即可,一些操作和其他控件相似。
第二,查看msdn或利用搜索引擎了解该控件的属性和方法,按需求进行相应配置。
第三,为控件添加数据。此处出现一些小问题,就是数据集的赋值,是二维数组,横坐标X是时间字符串,纵坐标Y是电能值,而传入参数需要的是字符串和long,这种二维数组只能自己定义数据类型了。
今天有点累,直接上代码吧
遇到的问题1:
字体过长会出现竖排,字体不清晰,需要改变控件大小
解决方法:每次只显示5个时间点,利用刻度控件进行左右调整。
遇到的问题2:
如何选择某个刻度左侧的5个值
解决方法:
思绪比较乱,大概意思就是这样。
不说了。
在COM控件集中有一个microsoft chart control,version6.0(oledb),简单地查了相关资料,发现可用,比较简单基础的一个控件,因为图表功能需求很简单,所以也没想什么专业图表控件。
首先,新建一个windows应用程序项目,一个简单的form。在左侧工具箱右键出现的选项中选择"选择项",在com集中找microsoft chart control,version6.0(oledb),添加。此时左侧工具箱会出现该控件,
将该控件拖入form即可,一些操作和其他控件相似。
第二,查看msdn或利用搜索引擎了解该控件的属性和方法,按需求进行相应配置。
第三,为控件添加数据。此处出现一些小问题,就是数据集的赋值,是二维数组,横坐标X是时间字符串,纵坐标Y是电能值,而传入参数需要的是字符串和long,这种二维数组只能自己定义数据类型了。
class mydata { public long powernum; public string time; }
今天有点累,直接上代码吧
private void showchart(DataSet sqlkfDataSet1)//传入数据集 可是查询数据库或自己构造 { mydata[] myda = new mydata[5]; for (short i = 0; i < 5; i++) { myda[i] = new mydata(); string s = sqlkfDataSet1.Tables[0].Rows[i][0].ToString(); myda[i].powernum =Convert.ToInt64(s); myda[i].time = sqlkfDataSet1.Tables[0].Rows[i][1].ToString().Substring(5)+"("+myda[i].powernum.ToString()+")"; } axMSChart.ChartData = new Object[6, 2] { { "电能表1", "电能表1" }, {myda[0].time,myda[0].powernum}, {myda[1].time,myda[1].powernum}, {myda[2].time,myda[2].powernum}, {myda[3].time,myda[3].powernum}, {myda[4].time,myda[4].powernum}, }; // Add a title and legend on the right side of the chart. axMSChart.Title.Text = "电能量"; axMSChart.Legend.Location.LocationType = MSChart20Lib.VtChLocationType.VtChLocationTypeRight; axMSChart.Legend.Location.Visible = true; axMSChart.Plot.get_Axis(MSChart20Lib.VtChAxisId.VtChAxisIdX, null).AxisTitle.Text = "日期"; axMSChart.Plot.get_Axis(MSChart20Lib.VtChAxisId.VtChAxisIdY, null).AxisTitle.Text = "电量"; axMSChart.chartType = MSChart20Lib.VtChChartType.VtChChartType2dLine; axMSChart.Stacking = false; }
遇到的问题1:
字体过长会出现竖排,字体不清晰,需要改变控件大小
解决方法:每次只显示5个时间点,利用刻度控件进行左右调整。
遇到的问题2:
如何选择某个刻度左侧的5个值
解决方法:
int index=this.trackBarpowercount.Maximum-this.trackBarpowercount.Value;//this.trackBarpowercount.Maximum刻度最大值为数据总条数 this.trackBarpowercount.Value刻度当前值 string sqlcom = "SELECT TOP 5 powernum, rtime from (SELECT TOP 5 powernum, rtime FROM fk_powernum WHERE rtime NOT IN (SELECT TOP " + index.ToString() + " rtime FROM fk_powernum ORDER BY rtime DESC) ORDER BY rtime DESC) DERIVEDTBL ORDER BY rtime ASC";
思绪比较乱,大概意思就是这样。
不说了。
相关文章推荐
- C# winform中不规则窗体制作的解决方案(已经解决24位色以上不能正常显示问题)
- [转]C# winform中不规则窗体制作的解决方案(已经解决24位色以上不能正常显示问题)
- C# winform中不规则窗体制作的解决方案(已经解决24位色以上不能正常显示问题)
- C# winform中不规则窗体制作的解决方案(已经解决24位色以上不能正常显示问题)
- C#中使用多线程访问Winform问题解决方案
- C#中使用多线程访问Winform问题解决方案
- C# winform中不规则窗体制作的解决方案(已经解决24位色以上不能正常显示问题)
- C#中使用多线程访问Winform问题解决方案
- C#中使用多线程访问Winform问题解决方案
- C#中使用多线程访问Winform问题解决方案
- c#中使用多线程访问winform中控件的若干问题 解决线程间操作无效: 从不是创建控件的线程访问它
- [转]C# winform中不规则窗体制作的解决方案(已经解决24位色以上不能正常显示问题)
- C# winform中不规则窗体制作的解决方案(已经解决24位色以上不能正常显示问题)
- C# winform中不规则窗体制作的解决方案(已经解决24位色以上不能正常显示问题)
- [转]C# winform中不规则窗体制作的解决方案(已经解决24位色以上不能正常显示问题)
- (转)C# winform中不规则窗体制作的解决方案(已经解决24位色以上不能正常显示问题)
- C#中使用多线程访问Winform问题解决方案
- c#中使用多线程访问winform中控件的若干问题
- c# 读取其他程序正打开的文件的时“正由另一进程使用,因此该进程无法访问该文件。"的问题解决方法
- C#调用exe解决PDF转图片问题(使用PDFBox方案,java语言编译jar包实现)