• WPF Visifire使用 基础篇二


    通过前面基础篇一介绍后,我想大家应该对visifire有了一定的了解了吧,下面在给大家看一个visifire的效果图吧,如图所以:

    这个效果是不是挺炫,想要实现这样的效果吗,哈哈,下面我就废话不多说了,直接上代码:

    第一步:前台代码

     <Grid x:Name="LayoutRoot" HorizontalAlignment="Center" VerticalAlignment="Center">
    
                <StackPanel Background="White">
                    <!--第一个图表-->
                    <vc:Chart CornerRadius="10,10,0,0" BorderThickness="0,1,1,0" Margin="0,0,0,0" Padding="5,5,5,20" 
                              HorizontalAlignment="Left" VerticalAlignment="Top" Theme="Theme1" Background="#FFF8F4FF" 
                              ShadowEnabled="True" x:Name="Chart1" Width="679" Height="200" ScrollingEnabled="false">
                        <vc:Chart.Titles>
                            <vc:Title BorderThickness="1" Margin="0,0,0,5" ShadowEnabled="True" Padding="5" CornerRadius="4" 
                                      FontSize="12" Text="Interaction between two separate charts">
                                <vc:Title.Background>
                                    <LinearGradientBrush>
                                        <GradientStop Color="White" Offset="0"></GradientStop>
                                        <GradientStop Color="White" Offset="1"></GradientStop>
                                    </LinearGradientBrush>
                                </vc:Title.Background>
                            </vc:Title>
                        </vc:Chart.Titles>
                        <vc:Chart.TrendLines>
                            <vc:TrendLine Opacity="0.1" LineColor="Red" Orientation="Vertical" StartValue="1" EndValue="10"/>
                            <vc:TrendLine Opacity="0.1" LineColor="Green" Orientation="Vertical" StartValue="11" EndValue="20"/>
                            <vc:TrendLine Opacity="0.1" LineColor="Blue" Orientation="Vertical" StartValue="21" EndValue="30"/>
                        </vc:Chart.TrendLines>
                        <vc:Chart.AxesX>
                            <vc:Axis AxisMaximum="31" StartFromZero="true" IncludeZero="False" Enabled="false" Interval="2" LineThickness="0">
                                <vc:Axis.Grids>
                                    <vc:ChartGrid Opacity="0.2" Interval="0.5"></vc:ChartGrid>
                                </vc:Axis.Grids>
                            </vc:Axis>
                        </vc:Chart.AxesX>
                        <vc:Chart.AxesY>
                            <vc:Axis LineThickness="0" TitleFontWeight = "Light" Title="Y-Axis" TitleFontSize = "12"  >
                                <vc:Axis.Grids>
                                    <vc:ChartGrid Opacity="0.2"  Interval="2" ></vc:ChartGrid>
                                </vc:Axis.Grids>
                            </vc:Axis>
                        </vc:Chart.AxesY>
                        <vc:Chart.PlotArea>
                            <vc:PlotArea BorderBrush="#002147" BorderThickness="0" ShadowEnabled="false" >
                                <vc:PlotArea.Background>
                                    <LinearGradientBrush>
                                        <GradientStop Color="White" Offset="0"></GradientStop>
                                        <GradientStop Color="White" Offset="1"></GradientStop>
                                    </LinearGradientBrush>
                                </vc:PlotArea.Background>
                            </vc:PlotArea>
                        </vc:Chart.PlotArea>
                    </vc:Chart>
                    
                    <!--第二个图表-->
                    <vc:Chart CornerRadius="10,0,10,10" BorderThickness="1,0,1,0" Padding="5,5,5,5" HorizontalAlignment="Left" VerticalAlignment="Top" Theme="Theme1" Background="#FFF8F4FF" ShadowEnabled="True" x:Name="Chart2" Width="680" Height="200" ScrollingEnabled="false">
                        <vc:Chart.TrendLines>
                            <vc:TrendLine Opacity="0.1" LineColor="Red" Orientation="Vertical" StartValue="1" EndValue="10"/>
                            <vc:TrendLine Opacity="0.1" LineColor="Green" Orientation="Vertical" StartValue="11" EndValue="20"/>
                            <vc:TrendLine Opacity="0.1" LineColor="Blue" Orientation="Vertical" StartValue="21" EndValue="30"/>
                        </vc:Chart.TrendLines>
                        <vc:Chart.AxesX>
                            <vc:Axis StartFromZero="true" AxisMaximum="31" IncludeZero="False" Interval="1" LineThickness="1" LineColor="Black" Title="Groups" TitleFontSize="14" >
                                <vc:Axis.Grids>
                                    <vc:ChartGrid Opacity="0.2" Interval="0.5"></vc:ChartGrid>
                                </vc:Axis.Grids>
                                <vc:Axis.AxisLabels>
                                    <vc:AxisLabels  ></vc:AxisLabels>
                                </vc:Axis.AxisLabels>
                                <!--<vc:Axis.CustomAxisLabels>
                                    <vc:CustomAxisLabels FontSize="12">
                                        <vc:CustomAxisLabels.Labels>
                                            <vc:CustomAxisLabel Text="Group1" From="1" To="10"/>
                                            <vc:CustomAxisLabel Text="Group2" From="11" To="20"/>
                                            <vc:CustomAxisLabel Text="Group3" From="21" To="30"/>
                                        </vc:CustomAxisLabels.Labels>
                                    </vc:CustomAxisLabels>
                                </vc:Axis.CustomAxisLabels>-->
                            </vc:Axis>
                        </vc:Chart.AxesX>
                        <vc:Chart.AxesY>
                            <vc:Axis LineThickness="0" TitleFontWeight = "Light" Title="Remarks" TitleFontSize = "14"  >
                                <vc:Axis.Grids>
                                    <vc:ChartGrid Opacity="0.2"  Interval="2" ></vc:ChartGrid>
                                </vc:Axis.Grids>
                                <!--<vc:Axis.CustomAxisLabels>
                                    <vc:CustomAxisLabels FontSize="10">
                                        <vc:CustomAxisLabels.Labels>
                                           <vc:CustomAxisLabel Text="Poor" From="20" To="20"/>
                                            <vc:CustomAxisLabel Text="Average" From="40" To="40"/>
                                            <vc:CustomAxisLabel Text="Good" From="50" To="68"/>
                                            <vc:CustomAxisLabel Text="VeryGood" From="70" To="80"/>
                                            <vc:CustomAxisLabel Text="Excellent" From="82" To="100"/>
                                        </vc:CustomAxisLabels.Labels>
                                    </vc:CustomAxisLabels>
                                </vc:Axis.CustomAxisLabels>-->
                            </vc:Axis>
                        </vc:Chart.AxesY>
                        <vc:Chart.PlotArea>
                            <vc:PlotArea BorderBrush="#002147" BorderThickness="0" ShadowEnabled="false" >
                                <vc:PlotArea.Background>
                                    <LinearGradientBrush>
                                        <GradientStop Color="White" Offset="0"></GradientStop>
                                        <GradientStop Color="White" Offset="1"></GradientStop>
                                    </LinearGradientBrush>
                                </vc:PlotArea.Background>
                            </vc:PlotArea>
                        </vc:Chart.PlotArea>
                    </vc:Chart>
                </StackPanel>
                
            </Grid>
    

      

    第二步:后台代码:

    1.create chart:在后台创建chart

    #region Create a chart
            public void CreateMyChart(DataTable dtChart, Chart chart, RenderAs renderAs, Double opacity)
            {
                //绑定Chart
                chart.Series.Clear();
                chart.Titles.Clear();
    
                chart.ScrollingEnabled = false;
                chart.AnimationEnabled = true;
                chart.ThemeEnabled = true;
                chart.View3D = true;
    
                DataSeries dataSeries = new DataSeries();
    
                //Chart的实例这是以饼图显示                                            
    
                // Set DataSeries property
                dataSeries.RenderAs = renderAs;
                dataSeries.Opacity = opacity;
                dataSeries.Bevel = false;
                dataSeries.MarkerType = Visifire.Commons.MarkerTypes.Triangle;
    
                DataPoint datapoint;
                for (int i = 0; i < dtChart.Rows.Count; i++)
                {
                    datapoint = new DataPoint();
                    if (renderAs == RenderAs.Line)
                    {
                        datapoint.MarkerEnabled = true;
                        datapoint.MarkerSize = 8;
                        datapoint.MarkerColor = datapoint.Color;
                    }
                    datapoint.AxisXLabel = dtChart.Rows[i]["job_id"].ToString();
                    datapoint.YValue = Convert.ToDouble(dtChart.Rows[i]["max_lvl"].ToString());
                    dataSeries.DataPoints.Add(datapoint);
                }
    
                //绑定当鼠标放上去显示的信息           
                dataSeries.LabelText = "#AxisXLabel, #YValue";
                chart.Series.Add(dataSeries);
    
                Title title = new Title();
                title.Text = "某某医院...";
                chart.Titles.Add(title);
                chart.IndicatorEnabled = true;
                chart.ShadowEnabled = true;
            }
            #endregion
    

      

    2.load :加载时需要绑定chart,以及Plotarea的实现

    View Code
    public VisifireWindow2()
            {
                InitializeComponent();
                DataSet ds = DBSQLHelper.Search("select * from jobs", null, CommandType.Text);
     
                CreateMyChart(ds.Tables[0], Chart1, RenderAs.Line, 1);
                CreateMyChart(ds.Tables[0], Chart2, RenderAs.Column, 1);
     
                Chart1.PlotArea.MouseMove += new EventHandler<PlotAreaMouseEventArgs>(PlotArea_MouseMove);
     
                Chart1.PlotArea.MouseLeave += new EventHandler<MouseEventArgs>(PlotArea_MouseLeave);
     
                Chart2.PlotArea.MouseMove += new EventHandler<PlotAreaMouseEventArgs>(PlotArea2_MouseMove);
     
                Chart2.PlotArea.MouseLeave += new EventHandler<MouseEventArgs>(PlotArea2_MouseLeave);
            }

    3.plotarea:两个chart,mousemove和mouseleave事件的实现效果的关键代码

    #region Chart2'PlotArea
            /// <summary>
            /// MouseMove event handler, it will enabled ShowIndicator for Chart1
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            void PlotArea2_MouseMove(object sender, PlotAreaMouseEventArgs e)
            {
                Chart1.ShowIndicator(e.XValue, e.YValue);
            }
    
            /// <summary>
            /// MouseLeave  event handler, it will disabled ShowIndicator for Chart1
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            void PlotArea2_MouseLeave(object sender, MouseEventArgs e)
            {
                Chart1.HideIndicator();
            }
            #endregion
    
            #region Chart1'PlotArea
    
            /// <summary>
            /// MouseMove event handler, it will enabled ShowIndicator for Chart2
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            void PlotArea_MouseMove(object sender, PlotAreaMouseEventArgs e)
            {
                Chart2.ShowIndicator(e.XValue, e.YValue);
            }
    
            /// <summary>
            /// MouseLeave event handler, it will disabled ShowIndicator for Chart2
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            void PlotArea_MouseLeave(object sender, MouseEventArgs e)
            {
                Chart2.HideIndicator();
            }
            #endregion
    

      

     

      哈哈哈,这样就可以了,麻烦大家多提提意见哦!

  • 相关阅读:
    ThroughRain第一次冲刺个人总结
    【操作系统】实验四 主存空间的分配和回收
    学习回顾与总结
    关于学术诚信与职业道德的承诺
    sprint个人总结+读书博客
    实验三 进程调度模拟程序
    团队项目3.0
    软件改进
    团队项目项目:二次开发
    作业调度
  • 原文地址:https://www.cnblogs.com/wyuan/p/WPF2.html
Copyright © 2020-2023  润新知