Sliverlight图形控件Visifire使用体会
1.由于项目(sliverlight项目)中要用图形来显示实时或历史数据
因此,从网上找了些资料,有两种控件比较适合
1.sliverlight tool kit
2.visifire
个人比较喜欢visifire的风格,因此就选择了这个。
2.测试效果
图1
图2
图3
3 代码
1.xaml代码
代码
<UserControl xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation" x:Class="YYKJ.ZHGIS.WEB.UserControls.TestChart"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="500" Height="400">
<Grid x:Name="LayoutRoot">
<Canvas x:Name="mainCV" Canvas.Top="100" Margin="0,50,0,0"></Canvas>
<StackPanel x:Name="spCover" Width="100" Height="25" HorizontalAlignment="Right" Margin="0,50,0,0" VerticalAlignment="Top" Background="Black" Visibility="Collapsed"/>
</Grid>
</UserControl>
其中mainCV是用来放图形的
spCover是用来遮挡visifire的水印的(效果图没传)
2.C#代码
代码
public void CreateChart(ObservableCollection<ETPiValue> oc)
{
Chart chart = new Chart();
//设置主题 有Theme1 Theme2 Theme3
chart.Theme = "Theme3";
//是否3D显示
chart.View3D = true;
//宽
chart.Width = 500;
//高
chart.Height = 300;
//图形标题
Title title = new Title();
title.Text = "测试图形";
chart.Titles.Add(title);
//图形类型 RenderAs是枚举类型 有很多种图形 如棒图 饼图等等
DataSeries dataSeries = new DataSeries();
dataSeries.RenderAs = RenderAs.StackedArea;
DataPoint dataPoint;
for (int i = 0; i < oc.Count; i++)
{
dataPoint = new DataPoint();
//Y轴数据
dataPoint.YValue = Convert.ToDouble(oc[i].TagValue);
//X轴名称
dataPoint.AxisXLabel = oc[i].SubName;
//SolidColorBrush sc = new SolidColorBrush();
//sc.Color = new Color { B = 0, G = 0, R = 255, A = 255 };
//dataPoint.Color = sc;
//dataPoint.ToolTipText = "1111";
dataSeries.DataPoints.Add(dataPoint);
}
chart.Series.Add(dataSeries);
mainCV.Children.Add(chart);
//遮罩层 用于取出水印
spCover.Visibility = Visibility.Visible;
}
基本用法已经写在注释里了,就不做解释了。
纠错:遮罩层 用于挡住水印,代码里打错字...
4 使用前先要把visifire的dll引用进来,再在代码里引用两个命名空间。
5 大家有什么的图形控件一起分享下。