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=, 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 <= ) 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();
}
}
}
}
WPF DEV dxc:ChartControl 柱状图的更多相关文章
- WPF DEV控件-ChartControl用法
WPF常用的第三方控件集,DevExpress 下面介绍如何生成Chart界面: <dxc:ChartControl AnimationMode="OnDataChanged" ...
- WPF DEV CellTemplateSelector(一个正确使用DevExpress CellTemplateSelector的Demo)
说明 我在项目中根据需求需要用到WPF Dev CellTemplateSelector时,遇到不少坑.曾一度想要放弃使用模板转换器,但又心有不甘,终于在不断努力下,达到了需求的要求.所以写下来和大家 ...
- DevExpress ChartControl 柱状图的使用【转】
//中心业务平台的“热门岗位信息监测”柱状图 public partial class HotJobInfo : UserControl { private object _o ...
- C# WinfForm 控件之dev图表 ChartControl
dev 图表控件 学习连接 新建一个winformApp form1上放一个button 再放一个chartControl Name 为cct 直接上代码 private void button1_C ...
- DevExpress中ChartControl柱状图(Bar)用法
我的数据 代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 chartControl1.Series.Clear(); ...
- Dev之ChartControl控件(二)— 绘制多重坐标图形
有时针对一个ChartControl控件可能要设置多个Y轴,进行显示: 以下举个例子:如在一个Chart中显示多个指标项如图: 首先,读取数据,并对左边的Y轴最大和最小值进行设定 IndexSerie ...
- Dev之ChartControl控件(一)
ChartControl控件主要包括Chart Title,Legend,Annotations,Diagram,Series五部分:如图: 1. 用RangeControl控件控制ChartCon ...
- WPF DEV实现手风琴效果
说明 最近用WPF+DevExpress做项目时,需要做一个类似手风琴的效果,效果的界面如下.因为没有现成的控件,需要自定义模板,所以写了一个Demo和大家分享,项目中可以根据实际情况使用.如果你用不 ...
- WPF 自定义图表(柱状图,曲线图)
1.功能 实现图表的数据绑定,动态绑定,属性更改绑定. 本文提供了一种思路. 2.原理 使用canvas绘制,使用反射来确定属性的绑定. 3.效果: 柱状图效果: 曲线图效果: 感谢阅读. 源码地址: ...
随机推荐
- CSS Basic Memo
1.bootstrap 清除浮动原理 .clearfix:before, .clearfix:after { content: ' ', display: table } .clearfix:afte ...
- Python *Mix_w
Python的历史起源: 1989年圣诞节期间,由吉多.范罗苏姆创始. Python的优点"优美""明确""简单" python是一门解释型 ...
- Spring搭建练习遇到的坑
1.Error:(7, 23) java: cannot find symbolsymbol: class ProceedingJoinPointlocation: class com.how2jav ...
- day71 菜单的排序 点击被选中
菜单的排序:(给菜单设置权重,权重高的让他显示在上面) from django import template from django.conf import settings from collec ...
- vue-router进阶-1-导航守卫
导航守卫主要用来通过跳转或取消的方式守卫导航 全局守卫,使用 router.beforeEach 注册一个全局前置守卫 const router = new VueRouter({ ... }) ro ...
- teamview修改id
怎么修改 TeamViewer ID 呢?按照下列的操作步骤,就能很简单的改变TeamViewer的id哦!1. 开始 > 运行,录入%appdata%,删除TeamViewer的文件夹: ...
- [Leetcode 108]有序数组转二叉搜索树Convert Sorted Array to Binary Search Tree
[题目] 给出的升序排序的数组,个数必为奇数,要求形成二叉搜索(平衡)树. [思路] 辅助函数fun,[0,len]=>[0,mid-1]+[mid+1,len]. 当left>right ...
- 移动 Ubuntu16.04 桌面左侧任务栏到屏幕底部
按下 Ctrl + Alt + t 键盘组合键调出终端,在终端中输入以下命令: gsettings set com.canonical.Unity.Launcher launcher-position ...
- Javascript中的this指向。
一.JavaScript中的函数 在了解this指向之前,要先弄明白函数执行时它的执行环境是如何创建的,这样可以更清楚的去理解JavaScript中的this指向. function fn(x,y,n ...
- centos7.5 安装mysql8.0.13
在Linux系统上使用rpm包管理器安装mysql Installing MySQL on Linux Using RPM Packages 环境:CentOS Linux release 7.4.1 ...