用GDI绘图, 通过数据直接绘制一张蜡柱图, 但觉得这样子的功能比较少, 所以到网上搜索一些能画出K线图的控件. 发现DynamicDataDisplay挺好的, 在它的开发截图里也发现可以绘制蜡柱图, 但文档好像做的不是很好, 不知道怎么用它来画, 在寻找它比较好的例子的时候发现有人推荐用amCharts绘制, 所以便去看了一下, 发现挺好用的, 效果如下:
准备工作
先要去这里下载amCharts Stock Chart for WPF并解压, 新建一个WPF Project, 在Toolbox里右击, 选择Choose Items, 然后点击Browse, 找到解压后的文件夹里有一个AmCharts.Windows.Stock.dll, 单击Okay, 准备工作就做好了.
界面中amCharts控件的配置
<ams:StockChart></ams:StockChart>用于在窗口中添加这样一个控件, 先看看这个控件是怎么绑定数据的:
0 |
< ams:StockChart.DataSets > |
1 |
< ams:DataSet Name = "stockSet1" Brush = "#7f8da9" |
2 |
ItemsSource = "{Binding Data}" |
4 |
OpenMemberPath = "open" HighMemberPath = "high" |
5 |
LowMemberPath = "low" CloseMemberPath = "close" |
6 |
ValueMemberPath = "close" VolumeMemberPath = "volume" |
8 |
</ ams:StockChart.DataSets > |
其中ItemSource中的Data是在程序里产生的, 它是一个StockInfo类的集合. DataMenberPath, HighMenberPath, LowMenberPath, CloseMenberPath, ValueMenberPath, VolumeMenberPath指定的元素都是Data集合中StockInfo的属性. StockInfo类结构如下:
00 |
public class StockInfo |
02 |
public DateTime date { get ; set ; } |
04 |
public double open { get ; set ; } |
05 |
public double high { get ; set ; } |
06 |
public double low { get ; set ; } |
07 |
public double close { get ; set ; } |
09 |
public double volume { get ; set ; } |
<ams:StockChart.Charts></ams:StockChart.Charts>标签用于插入表格, 表格中可以插入多个图形, 用<ams:Chart.Graphs></amd:Chart.Graphs>标签来创建图形. 比如下面的代码就创建了一个图形:
0 |
< ams:StockChart.Charts > |