首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > CAD教程 >

Telerik Silverlight 之Charting控件的施用

2012-11-03 
Telerik Silverlight 之Charting控件的使用效果还是不错的,还能设置动态加载效果,如下图:图表样式的资源文

Telerik Silverlight 之Charting控件的使用

效果还是不错的,还能设置动态加载效果,如下图:

Telerik Silverlight 之Charting控件的施用

                                                                                                               

Telerik Silverlight 之Charting控件的施用

图表样式的资源文件 RadChartStyle.xaml,内容如下:

<ResourceDictionaryxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    xmlns:System="clr-namespace:System;assembly=mscorlib"    xmlns:Telerik_Windows_Controls_Charting="clr-namespace:Telerik.Windows.Controls.Charting;assembly=Telerik.Windows.Controls.Charting">    <!-- 应该在此定义资源字典条目。-->    <SolidColorBrush x:Key="ChartTitleBackground" Color="#FF226AB8"/>    <SolidColorBrush x:Key="ChartTitleBorderBrush" Color="#FFFDFDFD"/>    <SolidColorBrush x:Key="ChartTitleOuterBorderBrush" Color="#FF226AB8"/>    <Thickness x:Key="ChartTitleBorderThickness">0</Thickness>    <Thickness x:Key="ChartTitleOuterBorderThickness">0,0,0,0</Thickness>    <Thickness x:Key="ChartTitlePadding">7</Thickness>    <SolidColorBrush x:Key="ChartTitleForeground" Color="White"/>    <System:Double x:Key="ChartTitleFontSize">12</System:Double>    <FontWeight x:Key="ChartTitleFontWeight">Bold</FontWeight>    <Style x:Key="ChartTitleStyle1" TargetType="Telerik_Windows_Controls_Charting:ChartTitle">        <Setter Property="HorizontalContentAlignment" Value="Center"/>        <Setter Property="Background" Value="{StaticResource ChartTitleBackground}"/>        <Setter Property="BorderBrush" Value="{StaticResource ChartTitleBorderBrush}"/>        <Setter Property="OuterBorderBrush" Value="{StaticResource ChartTitleOuterBorderBrush}"/>        <Setter Property="BorderThickness" Value="{StaticResource ChartTitleBorderThickness}"/>        <Setter Property="OuterBorderThickness" Value="{StaticResource ChartTitleOuterBorderThickness}"/>        <Setter Property="Padding" Value="{StaticResource ChartTitlePadding}"/>        <Setter Property="Foreground" Value="{StaticResource ChartTitleForeground}"/>        <Setter Property="FontSize" Value="{StaticResource ChartTitleFontSize}"/>        <Setter Property="FontWeight" Value="{StaticResource ChartTitleFontWeight}"/>        <Setter Property="Template">            <Setter.Value>                <ControlTemplate TargetType="Telerik_Windows_Controls_Charting:ChartTitle">                    <Border CornerRadius="5" BorderBrush="{TemplateBinding OuterBorderBrush}" BorderThickness="{TemplateBinding OuterBorderThickness}">                        <Border  CornerRadius="5" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" >                            <ContentControl HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" FontFamily="{TemplateBinding FontFamily}" FontSize="12" FontStyle="{TemplateBinding FontStyle}" FontWeight="{TemplateBinding FontWeight}" Foreground="{TemplateBinding Foreground}" Content="{TemplateBinding Content}" Height="15"/>                        </Border>                    </Border>                </ControlTemplate>            </Setter.Value>        </Setter>    </Style></ResourceDictionary>

App.xaml 主要是添加了资源字典,用于引入图表样式的资源文件RadChartStyle.xaml

 

<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"              x:Class="DCharting.App"             >    <Application.Resources>        <ResourceDictionary>            <ResourceDictionary.MergedDictionaries>                <ResourceDictionary Source="RadChartStyle.xaml"/>            </ResourceDictionary.MergedDictionaries>        </ResourceDictionary>    </Application.Resources></Application>


 

--------------------------------------折线图-----------------------------------------------------------------

<UserControl x:Class="DCharting.LineChart"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"    xmlns:Telerik_Windows_Controls="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.Charting"    mc:Ignorable="d"    d:DesignHeight="300" d:DesignWidth="400">    <UserControl.Resources>        <Style x:Key="GridLineStyle"       TargetType="Line">            <Setter Property="Stroke"           Value="Black" />            <Setter Property="StrokeThickness"           Value="1" />        </Style>    </UserControl.Resources>    <Grid x:Name="LayoutRoot">        <Telerik_Windows_Controls:RadChart x:Name="radChart" Content="RadChart" Foreground="#FFFBF9F9" TitleStyle="{StaticResource ChartTitleStyle1}"/>        <Button x:Name="prt" Content="打印" HorizontalAlignment="Right" Height="29" Margin="0,4,7,0" VerticalAlignment="Top" Width="83" RenderTransformOrigin="3.886,0.397" FontSize="13.333"/>    </Grid></UserControl>


 

using System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Windows;using System.Windows.Controls;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Animation;using System.Windows.Shapes;using Telerik.Windows.Controls.Charting;using System.Windows.Printing;using DCharting.ServiceReference1;namespace DCharting{    public partial class LineChart : UserControl    {        private Random rand = new Random(DateTime.Now.Millisecond);        public LineChart()        {            InitializeComponent();            setChart(DM.DFAGNM + "温度过程线");            ConfigureChart();            prt.Click += new RoutedEventHandler(prt_Click);        }        void prt_Click(object sender, RoutedEventArgs e)        {            PrintDocument prtDoc = new PrintDocument();            prtDoc.PrintPage += new EventHandler<PrintPageEventArgs>(prtDoc_PrintPage);            prtDoc.Print("温度过程线");        }        private void prtDoc_PrintPage(object sender, PrintPageEventArgs e)        {            e.PageVisual = radChart;        }        private void ConfigureChart()        {            LineSeriesDefinition lineSeries = new LineSeriesDefinition();            lineSeries.ShowItemLabels = false;            lineSeries.ShowPointMarks = false;            //SeriesMapping dataMapping = new SeriesMapping();            //dataMapping.SeriesDefinition = lineSeries;            //dataMapping.ItemMappings.Add(new ItemMapping("XValue", DataPointMember.XValue));            //dataMapping.ItemMappings.Add(new ItemMapping("YValue", DataPointMember.YValue));            //dataMapping.ItemMappings[1].SamplingFunction = ChartSamplingFunction.KeepExtremes;            //radChart.SeriesMappings.Add(dataMapping);            //radChart.DefaultView.ChartArea.ZoomScrollSettingsX.ScrollMode = ScrollMode.ScrollAndZoom;            // radChart.DefaultView.ChartArea.ZoomScrollSettingsY.ScrollMode = ScrollMode.ScrollAndZoom;            radChart.DefaultView.ChartArea.NoDataString = "正在载入图形数据,请等待...";            radChart.DefaultView.ChartArea.Padding = new Thickness(5, 10, 20, 5);            radChart.DefaultView.ChartArea.LabelFormatBehavior = LabelFormatBehavior.None;            radChart.SamplingSettings.SamplingThreshold = 3000; //此属性用于控制动画的时间            radChart.DefaultView.ChartArea.EnableAnimations = true; //此属性控制动画效果            radChart.DefaultView.ChartArea.EnableTransitionAnimations = true;            radChart.DefaultView.ChartLegend.Visibility = Visibility.Collapsed;        }        private void setChart(string title)        {            radChart.DefaultView.ChartTitle.Content = title;            this.radChart.DefaultSeriesDefinition.LegendDisplayMode = LegendDisplayMode.None;            // this.radChart.DefaultView.ChartLegendPosition = Telerik.Windows.Controls.Dock.Bottom;            radChart.DefaultView.ChartArea.AxisX.MajorGridLinesVisibility = Visibility.Visible;            radChart.DefaultView.ChartArea.AxisY.StripLinesVisibility = Visibility.Collapsed;            radChart.DefaultView.ChartArea.AxisY.MajorGridLinesVisibility = Visibility.Visible;            radChart.DefaultView.ChartArea.AxisY.MinorGridLinesVisibility = Visibility.Collapsed;            this.radChart.DefaultView.ChartArea.AxisY.AxisStyles.GridLineStyle = this.Resources["GridLineStyle"] as Style;            this.radChart.DefaultView.ChartArea.AxisX.AxisStyles.GridLineStyle = this.Resources["GridLineStyle"] as Style;            radChart.DefaultView.ChartTitle.HorizontalAlignment = HorizontalAlignment.Center;            radChart.DefaultView.ChartArea.AxisX.AutoRange = true;            radChart.DefaultView.ChartArea.AxisX.StripLinesVisibility = Visibility.Visible;            radChart.DefaultView.ChartArea.AxisY.StripLinesVisibility = Visibility.Visible;            radChart.DefaultView.ChartTitle.HorizontalAlignment = HorizontalAlignment.Center;            radChart.DefaultView.ChartLegend.Header = "图例";            radChart.DefaultView.ChartLegend.UseAutoGeneratedItems = true;            //X轴标题            radChart.DefaultView.ChartArea.AxisX.Title = "时间";            radChart.DefaultView.ChartArea.AxisX.LayoutMode = AxisLayoutMode.Between;            //Y轴标题            radChart.DefaultView.ChartArea.AxisY.Title = "温度";            addSerise();        }        private void addSerise()        {            getDataSoapClient client = new getDataSoapClient();            client.getAllTemperatureCompleted += new EventHandler<getAllTemperatureCompletedEventArgs>(client_getAllTemperatureCompleted);            client.getAllTemperatureAsync();        }        void client_getAllTemperatureCompleted(object sender, getAllTemperatureCompletedEventArgs e)        {            int index = 0;            DataSeries series = new DataSeries();            series.Definition = new LineSeriesDefinition();            series.LegendLabel = "温度";            if (e.Error == null)            {                System.Collections.ObjectModel.ObservableCollection<Temperature> trees = e.Result;                foreach (Temperature item in trees)                {                    if (index < 20)                    {                        index++;                        series.Add(new DataPoint(item.StationName, System.Convert.ToDouble(item.MaxTemp)));                    }                    else                    {                        break;                    }                }            }            radChart.DefaultView.ChartArea.DataSeries.Add(series);        }        private void chart_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)        {            //string year = ((ComboBoxItem)chart.SelectedItem).Content.ToString();            //setchart(year);        }    }}


 

------------------------------------------------柱状图-----------------------------------

 

 

<UserControl x:Class="DCharting.MainPage"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"    mc:Ignorable="d"    xmlns:Telerik_Windows_Controls="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.Charting"    d:DesignHeight="300" d:DesignWidth="400">    <UserControl.Resources>        <Style x:Key="GridLineStyle" TargetType="Line">            <Setter Property="Stroke" Value="Black" />            <Setter Property="StrokeThickness" Value="1" />        </Style>    </UserControl.Resources>    <Grid x:Name="LayoutRoot" Background="White">        <Telerik_Windows_Controls:RadChart x:Name="radChart" Content="RadChart" Foreground="#FFFBF9F9" TitleStyle="{StaticResource ChartTitleStyle1}"/>        <Button x:Name="prt" Content="打印" HorizontalAlignment="Right" Height="29" Margin="0,4,7,0" VerticalAlignment="Top" Width="83" RenderTransformOrigin="3.886,0.397" FontSize="13.333"/>    </Grid></UserControl>


 

using System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Windows;using System.Windows.Controls;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Animation;using System.Windows.Shapes;using Telerik.Windows.Controls.Charting;using System.Windows.Printing;using DCharting.ServiceReference1;namespace DCharting{    public partial class MainPage : UserControl    {        //产生一个随机数        private Random rand = new Random(DateTime.Now.Millisecond);        public MainPage()        {            InitializeComponent();            setChart(DM.DFAGNM + "温度柱柱状图");            ConfigureChart();            prt.Click += new RoutedEventHandler(prt_Click);        }        void prt_Click(object sender, RoutedEventArgs e)        {            PrintDocument prtDoc = new PrintDocument();            prtDoc.PrintPage += new EventHandler<PrintPageEventArgs>(prtDoc_PrintPage);            prtDoc.Print("温度柱柱状图");        }        private void prtDoc_PrintPage(object sender, PrintPageEventArgs e)        {            e.PageVisual = radChart;        }        private void ConfigureChart()        {            LineSeriesDefinition lineSeries = new LineSeriesDefinition();            lineSeries.ShowItemLabels = false;            lineSeries.ShowPointMarks = false;            //SeriesMapping dataMapping = new SeriesMapping();            //dataMapping.SeriesDefinition = lineSeries;            //dataMapping.ItemMappings.Add(new ItemMapping("XValue", DataPointMember.XValue));            //dataMapping.ItemMappings.Add(new ItemMapping("YValue", DataPointMember.YValue));            //dataMapping.ItemMappings[1].SamplingFunction = ChartSamplingFunction.KeepExtremes;            //radChart.SeriesMappings.Add(dataMapping);            radChart.DefaultView.ChartArea.ZoomScrollSettingsX.ScrollMode = ScrollMode.ScrollAndZoom;            radChart.DefaultView.ChartArea.ZoomScrollSettingsY.ScrollMode = ScrollMode.ScrollAndZoom;            radChart.DefaultView.ChartArea.NoDataString = "正在载入图形数据,请等待...";            radChart.DefaultView.ChartArea.Padding = new Thickness(5, 10, 20, 5);            radChart.DefaultView.ChartArea.LabelFormatBehavior = LabelFormatBehavior.None;            radChart.SamplingSettings.SamplingThreshold = 1000;  //此属性用于控制动画的时间            radChart.DefaultView.ChartArea.EnableAnimations = true; //此属性控制动画效果            radChart.DefaultView.ChartArea.EnableTransitionAnimations = true;            radChart.DefaultView.ChartLegend.Visibility = Visibility.Collapsed;        }        private void setChart(string title)        {            radChart.DefaultView.ChartTitle.Content = title;            this.radChart.DefaultSeriesDefinition.LegendDisplayMode = LegendDisplayMode.None;            // this.radChart.DefaultView.ChartLegendPosition = Telerik.Windows.Controls.Dock.Bottom;            radChart.DefaultView.ChartArea.AxisX.MajorGridLinesVisibility = Visibility.Visible;            radChart.DefaultView.ChartArea.AxisY.StripLinesVisibility = Visibility.Collapsed;            radChart.DefaultView.ChartArea.AxisY.MajorGridLinesVisibility = Visibility.Visible;            radChart.DefaultView.ChartArea.AxisY.MinorGridLinesVisibility = Visibility.Collapsed;            this.radChart.DefaultView.ChartArea.AxisY.AxisStyles.GridLineStyle = this.Resources["GridLineStyle"] as Style;            this.radChart.DefaultView.ChartArea.AxisX.AxisStyles.GridLineStyle = this.Resources["GridLineStyle"] as Style;            radChart.DefaultView.ChartTitle.HorizontalAlignment = HorizontalAlignment.Center;            radChart.DefaultView.ChartArea.AxisX.AutoRange = true;            radChart.DefaultView.ChartArea.AxisX.StripLinesVisibility = Visibility.Visible;            radChart.DefaultView.ChartArea.AxisY.StripLinesVisibility = Visibility.Visible;            radChart.DefaultView.ChartTitle.HorizontalAlignment = HorizontalAlignment.Center;            radChart.DefaultView.ChartLegend.Header = "图例";            radChart.DefaultView.ChartLegend.UseAutoGeneratedItems = true;            //X轴标题            radChart.DefaultView.ChartArea.AxisX.Title = "地点";            radChart.DefaultView.ChartArea.AxisX.LayoutMode = AxisLayoutMode.Between;            //Y轴标题            radChart.DefaultView.ChartArea.AxisY.Title = "温度";            addSerise();        }        /// <summary>        /// 通过WebService动态获取数据        /// </summary>        private void addSerise()        {            getDataSoapClient client = new getDataSoapClient();            client.getAllTemperatureCompleted += new EventHandler<getAllTemperatureCompletedEventArgs>(client_getAllTemperatureCompleted);            client.getAllTemperatureAsync();        }        void client_getAllTemperatureCompleted(object sender, getAllTemperatureCompletedEventArgs e)        {            int index = 0;            DataSeries series = new DataSeries();            series.Definition = new BarSeriesDefinition();            series.LegendLabel = "温度";            if (e.Error == null)            {                System.Collections.ObjectModel.ObservableCollection<Temperature> trees = e.Result;                foreach (Temperature item in trees)                {                    if (index < 20)                    {                        index++;                        series.Add(new DataPoint(item.StationName, System.Convert.ToDouble(item.MaxTemp)));                    }                    else                    {                        break;                    }                }            }            radChart.DefaultView.ChartArea.DataSeries.Add(series);        }        private void chart_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)        {            //string year = ((ComboBoxItem)chart.SelectedItem).Content.ToString();            //setchart(year);        }    }}

 

 

注意:这里提供了全部核心代码,数据是通过WebService和数据库交互获取

源代码下载链接:DCharting实例

 

 

热点排行