• WPF DEV dxc:ChartControl 柱状图


    先上效果图:

    <UserControl xmlns:dxc="http://schemas.devexpress.com/winfx/2008/xaml/charts"
                 mc:Ignorable="d">
        <Grid>
            <dxc:ChartControl Padding="0"
                              Background="Transparent"
                              BorderBrush="Transparent"
                              CrosshairEnabled="False"
                              AnimationMode="OnLoad"
                              >
                <dxc:ChartControl.CrosshairOptions>
                    <dxc:CrosshairOptions CrosshairLabelMode="ShowForNearestSeries" />
                </dxc:ChartControl.CrosshairOptions>
    
                <dxc:XYDiagram2D x:Name="dragram"
                                 PaneOrientation="Vertical" 
                                 EqualBarWidth="True"
                                 >
                    <dxc:XYDiagram2D.DefaultPane>
                        <dxc:Pane>
                            <dxc:Pane.DomainBrush>
                                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                                    <GradientStop Color="#66FFFFFF" Offset="1"/>
                                    <GradientStop Color="#FF466161" Offset="0"/>
                                    <GradientStop Color="#FF7D9090" Offset="0.5"/>
                                </LinearGradientBrush>
                            </dxc:Pane.DomainBrush>
                        </dxc:Pane>
                    </dxc:XYDiagram2D.DefaultPane>
                    <dxc:XYDiagram2D.AxisX>
                        <dxc:AxisX2D>
                            <dxc:AxisX2D.Label>
                                <dxc:AxisLabel Angle="-45" 
                                               FontSize="18"
                                               Foreground="White" 
                                               Visibility="Visible"
                                               x:Name="DXCAxisLabel"
                                               />
                            </dxc:AxisX2D.Label>
                        </dxc:AxisX2D>
                    </dxc:XYDiagram2D.AxisX>
                    <dxc:XYDiagram2D.AxisY>
                        <dxc:AxisY2D FontSize="24"
                                     Brush="White" 
                                     Foreground="White" 
                                     FontFamily="微软雅黑"
                                     GridLinesVisible="False"
                                     TickmarksVisible="False"
                                     TickmarksMinorVisible="False"
                                     >
                            <dxc:AxisY2D.Label>
                                <dxc:AxisLabel FontSize="18" 
                                               Staggered="False" 
                                               Foreground="White" 
                                               Visibility="Visible"
                                               FontFamily="微软雅黑"
                                               />
                            </dxc:AxisY2D.Label>
                        </dxc:AxisY2D>
                    </dxc:XYDiagram2D.AxisY>
                    <dxc:BarSideBySideSeries2D x:Name="Series" 
                                               BarWidth="0.6" 
                                               LabelsVisibility="True"
                                               >
    
                        <dxc:BarSideBySideSeries2D.Model>
                            <dxc:BorderlessGradientBar2DModel />
                        </dxc:BarSideBySideSeries2D.Model>
    
                    </dxc:BarSideBySideSeries2D>
                </dxc:XYDiagram2D>
                <dxc:ChartControl.Legend>
                    <dxc:Legend VerticalPosition="Top"
                                HorizontalPosition="RightOutside"
                                FontSize="24"
                                Orientation="Vertical"
                                />
                </dxc:ChartControl.Legend>
            </dxc:ChartControl>
        </Grid>
    </UserControl>

    后台代码:

    using DevExpress.Xpf.Charts;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Markup;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    
    namespace Kingo.Land.JCJG.Controls
    {
        /// <summary>
        /// UCChart.xaml 的交互逻辑
        /// </summary>
        public partial class UCChart : UserControl
        {
            public UCChart()
            {
                InitializeComponent();
            }
            /// <summary>
            /// 图表标题
            /// </summary>
            public string Title
            {
                get; set;
            }
    
            /// <summary>
            /// 图表统计单位
            /// </summary>
            public string Unit
            {
                get; set;
            }
    
            /// <summary>
            /// 图标信息
            /// </summary>
            public List<ChartData> listChartData
            {
                get; set;
            }
    
            /// <summary>
            /// 绑定图表
            /// </summary>
            public void InitData()
            {
                lblTitle.Content = Title;
                //lblUnit.Content = "    " + Unit;
                dragram.Series.Clear();
    
              
    
                foreach (ChartData item in listChartData)
                {
                    
                    BarSideBySideSeries2D entity = new BarSideBySideSeries2D();
    
                    entity.ActualLabel.Visible = false;
                    entity.DisplayName = item.DisplayName;
                    entity.Brush = item.Brush;
                    entity.Model = new BorderlessSimpleBar2DModel();
                    //entity.Label = new SeriesLabel();
                    //图表增长型的样式
                    entity.PointAnimation = new Bar2DGrowUpAnimation();
                    foreach (KeyValuePair<string, double> dic in item.dicPoints)
                    {
                        entity.Points.Add(new SeriesPoint { Argument = dic.Key, Value = dic.Value  });
                    }
    
    
                    dragram.AxisX = new AxisX2D();
                    dragram.DefaultPane.AxisXScrollBarOptions = new ScrollBarOptions() { Visible =false };
                       //dragram.AxisX.Label = new AxisLabel();
                       //dragram.AxisX.Label.Staggered = true;
                       DataTemplate myTemplate = (DataTemplate)Resources["AxisXLabelTemplate"];
                    dragram.AxisX.Label = new DevExpress.Xpf.Charts.AxisLabel() { ElementTemplate = myTemplate, FontSize=24, Foreground=new SolidColorBrush(Colors.White) };
                    dragram.Series.Add(entity);
                }
               
            }
            /// <summary>
            /// 绑定图表
            /// </summary>
            public void InitData1()
            {
                lblTitle.Content = Title;
                //lblUnit.Content = "    " + Unit;
                dragram.Series.Clear();
                foreach (ChartData item in listChartData)
                {
                    BarSideBySideStackedSeries2D entity = new BarSideBySideStackedSeries2D();
                    entity.DisplayName = item.DisplayName;
                    entity.Brush = item.Brush;
                    entity.ActualLabel.Visible = false;
                    //entity.Label = new SeriesLabel();
                    //entity.Label.
                    //图表增长型的样式
                    entity.PointAnimation = new Bar2DGrowUpAnimation();
                    foreach (KeyValuePair<string, double> dic in item.dicPoints)
                    {
                        SeriesPoint sPoint = new SeriesPoint { Argument = dic.Key, Value = dic.Value, Tag = item.DisplayCode };
                        entity.Points.Add(sPoint);
                    }
    
                    dragram.AxisX = new AxisX2D();
                    DataTemplate myTemplate = (DataTemplate)Resources["AxisXLabelTemplate"];
                    dragram.AxisX.Label = new DevExpress.Xpf.Charts.AxisLabel() { ElementTemplate = myTemplate };
                    dragram.AxisX.Interlaced = true;
                    dragram.AxisX.Alignment = AxisAlignment.Near;
                    //dragram.AxisX.ActualLabel.Staggered = true;
                    dragram.Series.Add(entity);
                }
            }
    
            /// <summary>
            /// 图表信息
            /// </summary>
            public class ChartData
            {
                /// <summary>
                /// 统计的内容
                /// </summary>
                public string DisplayName { get; set; }
    
                public string DisplayCode { get; set; }
    
                /// <summary>
                /// 内容对应的颜色
                /// </summary>
                public SolidColorBrush Brush { get; set; }
    
                /// <summary>
                /// 所有相关内容的地市(地市名称,对应数值)
                /// </summary>
                public Dictionary<string, double> dicPoints { get; set; }
            }
    
            private void dragram_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
            {
               
            }
    
            public Action<string> ShowDetails;
    
            private void chart_MouseDoubleClick(object sender, MouseButtonEventArgs e)
            {
                Point position = e.GetPosition(chart);
                ChartHitInfo hitInfo = chart.CalcHitInfo(position);
                if (hitInfo != null && hitInfo.SeriesPoint != null)
                {
                    if (ShowDetails != null)
                        ShowDetails(hitInfo.SeriesPoint.Argument.ToString());
                }
            }
        }
    
        public class WidthToOffsetConverter : MarkupExtension, IValueConverter
        {
            public WidthToOffsetConverter()
            {
    
            }
            public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                double width = (double)value;
                return -(width * 0.35);
            }
    
            public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                throw new NotImplementedException();
            }
    
            public override object ProvideValue(IServiceProvider serviceProvider)
            {
                return this;
            }
        }
    }

    使用方法:

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Linq;
    using System.Text;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    
    namespace Kingo.Land.JCJG.Controls
    {
        /// <summary>
        /// UCJZJDControl.xaml 的交互逻辑
        /// </summary>
        public partial class UCJZJDControl : UserControl
        {
            public UCJZJDControl()
            {
                InitializeComponent();
                this.Loaded += UCJZJDControl_Loaded;
                this.btnShow.Click += BtnShow_Click;
            }
    
            private void BtnShow_Click(object sender, RoutedEventArgs e)
            {
                this.Visibility = Visibility.Collapsed;
            }
    
            private void UCJZJDControl_Loaded(object sender, RoutedEventArgs e)
            {
                InitData();
            }
    
            private void InitData()
            {try
                {
                    #region 
                    dbHelper = Kingo.Common.DBOperator.RDBFactory.CreateDbHelper(System.Configuration.ConfigurationManager.AppSettings["OracleConn"], Kingo.Common.DBOperator.DatabaseType.Oracle);
                    string sql = @"select * from Table";
                    System.Data.DataTable dtSource = dbHelper.ExecuteDatatable("tb", sql, true);
                    if (dtSource == null || dtSource.Rows.Count <= 0) return;
                    chart.listChartData = new List<UCChartControl.ChartData>();
                    UCChartControl.ChartData data = new UCChartControl.ChartData();
                    data.DisplayName = "未举证";
                    data.Brush = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FF384C56"));
                    data.dicPoints = new Dictionary<string, double>();
    
                    UCChartControl.ChartData data1 = new UCChartControl.ChartData();
                    data1.DisplayName = "已举证";
                    data1.Brush = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FF627373"));
                    data1.dicPoints = new Dictionary<string, double>();
    
                    foreach (DataRow dr in dtSource.Rows)
                    {
                        data.dicPoints.Add(dr["MC"].ToString(), Convert.ToDouble(dr["WJZ"].ToString()));
                        data1.dicPoints.Add(dr["MC"].ToString(), Convert.ToDouble(dr["JZ"].ToString()));
                    }
                    chart.listChartData.Add(data);
                    chart.listChartData.Add(data1);
                    chart.InitData();
                    #endregion
                }
                catch (Exception)
                {
                    throw;
                }
                finally
                {
                    if (dbHelper != null)
                        dbHelper.DisConnect();
                }
            }
        }
    }
  • 相关阅读:
    [QML] Connections元素介绍
    Common Lisp语言快速入门
    DataGrid模板列取值问题
    DataGrid 中使用 复选框(CheckBox) 删除纪录
    SQL SELECT INTO
    SQL中Case的使用方法(上篇)
    SQL中Case的使用方法(下篇)
    C# ArrayList的用法
    关于 <customErrors> 标记的“mode”属性设置为“Off”的问题的解决方案
    SQL SERVER 中identity
  • 原文地址:https://www.cnblogs.com/SeNaiTes/p/10444155.html
Copyright © 2020-2023  润新知