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.效果: 柱状图效果: 曲线图效果: 感谢阅读. 源码地址: ... 
随机推荐
- python全栈开发笔记---------字符串格式化
			字符串格式化 %s 可以接收任何值, %d只能接收整形 .其他类型报错 msg ='i am %s my body' %'ales' print(msg) #i am ales my body msg ... 
- 浮动滚动条 slimScroll
			1.引入jquery 2.映入slimScrolljs :<script src="https://cdn.bootcss.com/jQuery-slimScroll/1.3.8/jq ... 
- IntelliJ IDEA使用教程(很全)
			IntelliJ IDEA使用教程(很全) 这个编辑器我就不再多做介绍了.直接开始新建maven hello world 的Java web项目啦 你电脑上得有jdk1.7,或者1.8,然后就是mav ... 
- QFileSystemModel中通过flags函数反应代码的层级思考
			Qt的Model/View设计中,有一些隐藏的代码,它们大多放在私有类里,对于类的作用非常关键,体现着Qt的整体设计思想.然而,由于它们比较隐蔽,学习起来比较繁琐,受到人们的忽视.然而,体现设计思想, ... 
- return  返回值的用法
			#coding:utf-8 # (1)把数据返回到函数调用处 def func(): # return 1 # return "aaabb" return [1,2,3,4] re ... 
- wc语法2
			wc命令的功能为统计指定文件中的字节数.字数.行数, 并将统计结果显示输出. 语法:wc [选项] 文件… 说明:该命令统计给定文件中的字节数.字数.行数.如果没有给出文件名,则从标准输入读取.wc同 ... 
- Python函数定义、文件操作(读写、修改)
			date:2018421 day3 一.函数定义 def 函数名(首字母大写) 增加程序可读性 #直接写函数名即可调用函数 #参数 ①.形参 ②.实参 ③.缺省参数 如果有默认值,调用的时候没有传递 ... 
- Atom+latex+中文环境
			最近在写论文,的路上.很多idea都受限于官方给的模板不能够添加自己即时的中文idea,所以添加中文到文献中很有必要,这里记录自己添加中文的几个小步骤 1. 受限将atom中的latex packag ... 
- cocos2dx开发之util类&方法——字符串替换
			/*将originStr字符串中的searchStr替换成replaceStr*/ std::string str_replace(std::string originStr,std::string ... 
- python学习之路07
			Python中你可能不关心的这几个关键字:break.continue.pass 1.break 作用:跳出循环[直接跳出整个循环,继续执行后面的代码] 1.特殊情况一 #当break使用在嵌套循环中 ... 
