SciChart WPF Charts SDK v6.x
一、前言
SciChart SDK v6.x有破解版的,至2099年到期,有水印。官方教程见:[SciChart WPF Documentation - Tutorial 01 - Referencing SciChart DLLs | WPF Chart Documentation](https://www.scichart.com/documentation/win/current/webframe.html#Tutorial 01 - Referencing SciChart DLLs.html)。
二、2D Charts基础教程。
1、引用DLL
创建了WPF项目后,第一步就是要引用DLL,DLL位于SDK的安装目录下。
2、SciChartSurface
需要引入命名空间:
xmlns:sci="http://schemas.abtsoftware.co.uk/scichart"
<sci:SciChartSurface ChartTitle="{Binding ChartTitle}">
<sci:SciChartSurface.XAxis>
<sci:NumericAxis AxisTitle="{Binding XAxisTitle}" />
</sci:SciChartSurface.XAxis>
<sci:SciChartSurface.YAxis>
<sci:NumericAxis AxisTitle="{Binding YAxisTitle}" />
</sci:SciChartSurface.YAxis>
</sci:SciChartSurface>
private string _chartTitle = "Hello SciChart World!";
private string _xAxisTitle = "XAxis";
private string _yAxisTitle = "YAxis";
public string ChartTitle
{
get { return _chartTitle; }
set
{
_chartTitle = value;RaisePropertyChanged();
}
}
public string XAxisTitle
{
get { return _xAxisTitle; }
set
{
_xAxisTitle = value;
RaisePropertyChanged();
}
}
public string YAxisTitle
{
get { return _yAxisTitle; }
set
{
_yAxisTitle = value;
RaisePropertyChanged();
}
}
3、RenderableSeries
<sci:SciChartSurface ChartTitle="{Binding ChartTitle}" RenderableSeries="{sci:SeriesBinding Series}">
<sci:SciChartSurface.XAxis>
<sci:NumericAxis AxisTitle="{Binding XAxisTitle}" />
</sci:SciChartSurface.XAxis>
<sci:SciChartSurface.YAxis>
<sci:NumericAxis AxisTitle="{Binding YAxisTitle}" />
</sci:SciChartSurface.YAxis>
</sci:SciChartSurface>
private readonly ObservableCollection<IRenderableSeriesViewModel> _series =
new ObservableCollection<IRenderableSeriesViewModel>();
public ObservableCollection<IRenderableSeriesViewModel> Series
{
get { return _series; }
}
var xyData = new XyDataSeries<double, double>() { SeriesName="Series1"};
for (int i = 0; i < 1000; i++)
{
xyData.Append(i, Math.Sin(i * 0.02));
}
Series.Add(new LineRenderableSeriesViewModel
{
DataSeries=xyData,
});
4、Zoom和Pan
<sci:SciChartSurface
Grid.Row="1"
ChartTitle="{Binding ChartTitle}"
RenderableSeries="{sci:SeriesBinding Series}">
<sci:SciChartSurface.XAxis>
<sci:NumericAxis AxisTitle="{Binding XAxisTitle}" />
</sci:SciChartSurface.XAxis>
<sci:SciChartSurface.YAxis>
<sci:NumericAxis AxisTitle="{Binding YAxisTitle}" />
</sci:SciChartSurface.YAxis>
<sci:SciChartSurface.ChartModifier>
<sci:ModifierGroup>
<sci:MouseWheelZoomModifier IsEnabled="True" />
</sci:ModifierGroup>
</sci:SciChartSurface.ChartModifier>
</sci:SciChartSurface>
需要添加到ChartModifier中,其中有一个ModifierGroup.这里有很多行为可以添加.
Modifier Name | Description |
---|---|
MouseWheelZoomModifier | 鼠标滑轮进行缩放 |
RubberBandXyZoomModifier | 鼠标画矩形进行放大 |
XAxisDragModifier | 拖拽X轴,进行X轴的缩放 |
YAxisDragModifier | 拖拽Y轴,进行Y轴的缩放 |
ZoomExtentsModifier | 双击复原缩放为原始值 |
ZoomPanModifier | 可以在XY方向上直接拖拽 |
<sci:SciChartSurface
Grid.Row="1"
ChartTitle="{Binding ChartTitle}"
RenderableSeries="{sci:SeriesBinding Series}">
<sci:SciChartSurface.XAxis>
<sci:NumericAxis AxisTitle="{Binding XAxisTitle}" />
</sci:SciChartSurface.XAxis>
<sci:SciChartSurface.YAxis>
<sci:NumericAxis AxisTitle="{Binding YAxisTitle}" />
</sci:SciChartSurface.YAxis>
<sci:SciChartSurface.ChartModifier>
<sci:ModifierGroup>
<!-- 鼠标滑轮在X方向进行缩放 -->
<sci:MouseWheelZoomModifier ActionType="Zoom" XyDirection="XDirection" />
<!-- 双击时复原缩放和平移 -->
<sci:ZoomExtentsModifier ExecuteOn="MouseDoubleClick" />
<!-- 左键拖拽时在X方向平移 -->
<sci:ZoomPanModifier
ClipModeX="None"
XyDirection="XDirection"
ZoomExtentsY="False" />
</sci:ModifierGroup>
</sci:SciChartSurface.ChartModifier>
</sci:SciChartSurface>
5、ToolTip和Legends
<sci:SciChartSurface
Grid.Row="1"
ChartTitle="{Binding ChartTitle}"
RenderableSeries="{sci:SeriesBinding Series}">
<sci:SciChartSurface.XAxis>
<sci:NumericAxis AxisTitle="{Binding XAxisTitle}" />
</sci:SciChartSurface.XAxis>
<sci:SciChartSurface.YAxis>
<sci:NumericAxis AxisTitle="{Binding YAxisTitle}" />
</sci:SciChartSurface.YAxis>
<sci:SciChartSurface.ChartModifier>
<sci:ModifierGroup>
<!-- 鼠标滑轮在X方向进行缩放 -->
<sci:MouseWheelZoomModifier ActionType="Zoom" XyDirection="XDirection" />
<!-- 双击时复原缩放和平移 -->
<sci:ZoomExtentsModifier ExecuteOn="MouseDoubleClick" />
<!-- 左键拖拽时在X方向平移 -->
<sci:ZoomPanModifier
ClipModeX="None"
XyDirection="XDirection"
ZoomExtentsY="False" />
<sci:LegendModifier
HorizontalAlignment="Center"
VerticalAlignment="Top"
Orientation="Horizontal"
ShowLegend="True" />
<sci:RolloverModifier
DrawVerticalLine="True"
ShowAxisLabels="True"
ShowTooltipOn="MouseHover"
SourceMode="AllSeries" />
</sci:ModifierGroup>
</sci:SciChartSurface.ChartModifier>
</sci:SciChartSurface>