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.效果: 柱状图效果: 曲线图效果: 感谢阅读. 源码地址: ...
随机推荐
- 网络编程,socket
1.网络编程 网络: TCP/IP 彼此之间遵守协议和规范!之间才能产生通信! IP: 每个人都有自己的身份证号! 用来标识我们网络中每一台计算机! IP地址= 网络地址 +主机地址 网络地址 :标识 ...
- Python随笔--函数(参数)
函数文档: 关键字参数: 默认参数:定义了默认值的参数 收集参数(可变参数):
- angular2 pipe实现搜索结果中的搜索关键字高亮
效果图如下 1.声明一个pipe import {Pipe, Injectable, PipeTransform} from '@angular/core';import { DomSanitizer ...
- 18-09-20 关于Xlrd和Xlwt的初步学习
#一关于利用xlrd 打开Excel 读取数据的简单介绍import xlrd """ #1 xlrd 基础的用法:读取,获取sheet,获取内容,行数,列数def re ...
- Postman插件使用
Postman插件:模拟前端请求后台,用于后台对外接口测试 POSTMAN解决..先解压Postman_v4.1.3.rar 然后按自己实际解压的文件夹里面的这个文件夹_metadata前面的_去掉 ...
- 剑指Offer 4. 重建二叉树 (二叉树)
题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7, ...
- python int str
1. int 类型转换 a = "123" b = int(a) b = b+10 print(type(a),a) print(type(b),b) 2. int(num,bas ...
- win10 家庭版修改hosts的权限
https://jingyan.baidu.com/article/624e7459b194f134e8ba5a8e.html
- android用户信息保存
一.SharedPreferences key-value方式保存简单类型的数据.文件位置data/data/相应的包名/xml文件 保存 SharedPreferences preference = ...
- 几个特殊的IP地址
1)私有地址 IP地址在全世界范围内唯一,看到这句话你可能有这样的疑问,像192.168.0.1这样的地址在许多地方都能看到,并不唯一,这是为何?Internet管理委员会规定如下地址段为私有 ...