Devexpress系列一 之 ChartControl 柱形图BarSideBySideSeries2D
这一篇是讲的是简单的柱形图,
柱形图运行效果如下图:

新建WPF窗体应用程序后(WPF用户控件也可以),工程引用DevExpress.Xpf.Charts.v17.1.dll,
在XAML头部引用名称 xmlns:dxc="http://schemas.devexpress.com/winfx/2008/xaml/charts"
XAML代码如下:
<Window x:Class="DashBoardNavigationDemo.BarChartWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:dxc="http://schemas.devexpress.com/winfx/2008/xaml/charts"
xmlns:local="clr-namespace:DashBoardNavigationDemo"
mc:Ignorable="d"
Title="BarChartWindow" Loaded="Window_Loaded"> <Grid Name="barChartGrid" Background="#262A4D" >
<Grid.RowDefinitions>
<RowDefinition Height="25"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid Background="#2B3059">
<TextBlock Text="工序投入产出柱形图" FontSize="15" Foreground="White" HorizontalAlignment="Left"
VerticalAlignment="Center" Margin="15,0,0,0"/>
</Grid>
<Grid Grid.Row="1">
<dxc:ChartControl Name="barChart" AnimationMode="OnLoad" BorderBrush="#262A4D"
Background="#262A4D" Margin="-4,10,10,-2" Padding="0,0,0,0">
<dxc:ChartControl.Legend>
<dxc:Legend Background="#262A4D" Visible="True" HorizontalPosition="Right" VerticalPosition="TopOutside"
Orientation="Horizontal" FontSize="12" Margin="0"
Padding="0" BorderThickness="0" >
</dxc:Legend>
</dxc:ChartControl.Legend>
<dxc:ChartControl.Diagram>
<dxc:XYDiagram2D EnableAxisXNavigation="False" BarDistance="0">
<dxc:XYDiagram2D.Series>
<dxc:BarSideBySideSeries2D Name="BarSideSerie" Brush="#FFFF00" DisplayName="投入"
LabelsVisibility="True" AnimationAutoStartMode="SetStartState">
<dxc:BarSideBySideSeries2D.Model>
<dxc:BorderlessSimpleBar2DModel/>
</dxc:BarSideBySideSeries2D.Model>
<dxc:BarSideBySideSeries2D.Label>
<dxc:SeriesLabel Foreground="Red" dxc:BarSideBySideSeries2D.LabelPosition="Outside"
HorizontalAlignment="Center" VerticalAlignment="Center"/>
</dxc:BarSideBySideSeries2D.Label>
</dxc:BarSideBySideSeries2D>
<dxc:BarSideBySideSeries2D Name="BarSideSerie2" Brush="#0909F7" DisplayName="产出" Foreground="WhiteSmoke"
LabelsVisibility="True" AnimationAutoStartMode="SetStartState">
<dxc:BarSideBySideSeries2D.Model>
<dxc:BorderlessSimpleBar2DModel/>
</dxc:BarSideBySideSeries2D.Model>
<dxc:BarSideBySideSeries2D.Label>
<dxc:SeriesLabel
dxc:BarSideBySideSeries2D.LabelPosition="Outside"
ConnectorVisible="False"
ResolveOverlappingMode="Default"
Indent="20"
dxc:MarkerSeries2D.Angle="90"
Visible="True">
<dxc:SeriesLabel.ElementTemplate>
<DataTemplate>
<Border Background="Transparent" Opacity="0.75" CornerRadius="2">
<StackPanel>
<TextBlock Text="{Binding Path=Text}" Foreground="Red"/>
</StackPanel>
</Border>
</DataTemplate>
</dxc:SeriesLabel.ElementTemplate>
</dxc:SeriesLabel>
</dxc:BarSideBySideSeries2D.Label>
</dxc:BarSideBySideSeries2D>
</dxc:XYDiagram2D.Series>
<dxc:XYDiagram2D.AxisX>
<dxc:AxisX2D x:Name="_AxisX" Visible="True" Brush="#3c3e71" TickmarksMinorVisible="False"
GridLinesMinorVisible="False" GridLinesVisible="False">
<dxc:AxisX2D.CrosshairAxisLabelOptions>
<dxc:CrosshairAxisLabelOptions />
</dxc:AxisX2D.CrosshairAxisLabelOptions>
<dxc:AxisX2D.Label>
<dxc:AxisLabel Foreground="WhiteSmoke" Padding="0,1" FontSize="12"/>
</dxc:AxisX2D.Label>
</dxc:AxisX2D>
</dxc:XYDiagram2D.AxisX>
<dxc:XYDiagram2D.AxisY >
<dxc:AxisY2D x:Name="_AxisY" GridLinesMinorVisible="True">
<dxc:AxisY2D.Label>
<dxc:AxisLabel Foreground="WhiteSmoke" FontSize="12"/>
</dxc:AxisY2D.Label>
<dxc:AxisY2D.Title>
<dxc:AxisTitle Visible="True" Content="产量, 万片"/>
</dxc:AxisY2D.Title>
</dxc:AxisY2D>
</dxc:XYDiagram2D.AxisY>
<dxc:XYDiagram2D.DefaultPane>
<dxc:Pane Name="DefaultPaneBackground" DomainBorderBrush="#262A4D"
DomainBrush="#262A4D"/>
</dxc:XYDiagram2D.DefaultPane>
</dxc:XYDiagram2D>
</dxc:ChartControl.Diagram>
</dxc:ChartControl>
</Grid>
</Grid>
</Window>
C#代码如下:
using DevExpress.Xpf.Charts;
using System;
using System.Collections.Generic;
using System.Windows; namespace DashBoardNavigationDemo
{
/// <summary>
/// BarChartWindow.xaml 的交互逻辑
/// </summary>
public partial class BarChartWindow : Window
{
private List<SeriesPoint> lsBarPoint = new List<SeriesPoint>(); //投入柱形图数据源
private List<SeriesPoint> lsBarPoint2 = new List<SeriesPoint>(); //产出柱形图数据源 public BarChartWindow()
{
InitializeComponent();
} /// <summary>
/// 绑定数据
/// </summary>
private void BindData()
{
GetData();
BarSideSerie.Points.Clear();
BarSideSerie.Points.AddRange(lsBarPoint);
BarSideSerie2.Points.Clear();
BarSideSerie2.Points.AddRange(lsBarPoint2);
BarSideSerie.Animate();
BarSideSerie2.Animate();
barChart.UpdateData();
} private void Window_Loaded(object sender, RoutedEventArgs e)
{
BindData();
} /// <summary>
/// 获取数据并加工转化
/// </summary>
private void GetData()
{
List<string> list = new List<string>() { "工序1", "工序2", "工序3", "工序4" };
Dictionary<string, int> dic1Value = new Dictionary<string, int>();
Dictionary<string, int> dic2Value = new Dictionary<string, int>(); Random rd = new Random();
foreach (var processName in list)
{
int num = ;
num = rd.Next(, );
if (dic1Value.ContainsKey(processName))
{
dic1Value[processName] = num;
}
else
{
dic1Value.Add(processName, num);
}
} foreach (var processName in list)
{
int num = ;
num = rd.Next(, );
if (dic2Value.ContainsKey(processName))
{
dic2Value[processName] = num;
}
else
{
dic2Value.Add(processName, num);
}
} lsBarPoint.Clear();
lsBarPoint2.Clear();
foreach (var item in dic1Value)
{
lsBarPoint.Add(new SeriesPoint() { Argument = item.Key, Value = item.Value });
} foreach (var item in dic2Value)
{
lsBarPoint2.Add(new SeriesPoint() { Argument = item.Key, Value = item.Value });
}
}
}
}
ChartControl柱形图相关属性总结:
1.AnimationMode 属性设置柱形图控件的动画效果:OnLoad是加载时动画触发动画效果;OnDataChanged 是图表数据改变时;Disabled是禁用动画效果。
2.Legend:图例
<dxc:ChartControl.Legend>
<dxc:Legend Background="#262A4D" Visible="True" HorizontalPosition="Right" VerticalPosition="TopOutside"
Orientation="Horizontal" FontSize="12" Margin="0"
Padding="0" BorderThickness="0" >
</dxc:Legend>
</dxc:ChartControl.Legend>
3.X或Y轴属性
<dxc:XYDiagram2D.AxisY >
<dxc:AxisY2D x:Name="_AxisY" GridLinesMinorVisible="True">
<dxc:AxisY2D.Label>
<dxc:AxisLabel Foreground="WhiteSmoke" FontSize="12"/>
</dxc:AxisY2D.Label> <dxc:AxisY2D.Title>
<dxc:AxisTitle Visible="True" Content="产量, 万片"/>
</dxc:AxisY2D.Title>
</dxc:AxisY2D>
</dxc:XYDiagram2D.AxisY>
dxc:AxisY2D.Label 表示Y轴坐标刻度值标签,X轴同理。
dxc:AxisY2D.Title 表示Y轴标题,X轴同理。
4.柱形图中间主体显示区域设置:
<dxc:XYDiagram2D.DefaultPane>
<dxc:Pane Name="DefaultPaneBackground" DomainBorderBrush="#262A4D"
DomainBrush="#262A4D"/>
</dxc:XYDiagram2D.DefaultPane>
上面代码设置了柱形图主体区域的背景色。
5.dxc:XYDiagram2D.Series 设置 ChartControl有哪些系列的图表(柱形图,折线图,饼图,雷达图等),
在此例中,我在 dxc:XYDiagram2D.Series中添加了两个BarSideBySideSeries2D系列。
6.dxc:BarSideBySideSeries2D.Model设置柱形图的外观
<dxc:BarSideBySideSeries2D.Model>
<dxc:BorderlessSimpleBar2DModel/>
</dxc:BarSideBySideSeries2D.Model>
7.dxc:BarSideBySideSeries2D.Label 设置柱形图上的的标签显示的风格
<dxc:BarSideBySideSeries2D.Label>
<dxc:SeriesLabel Foreground="Red" dxc:BarSideBySideSeries2D.LabelPosition="Outside"
HorizontalAlignment="Center" VerticalAlignment="Center"/>
</dxc:BarSideBySideSeries2D.Label>
上面代码设置了柱形图显示值的前景色是红色 :Foreground="Red"
标签的位置在柱形图外面顶上:dxc:BarSideBySideSeries2D.LabelPosition="Outside"
水平方向居中对齐,垂直方向居中对象。
上面那种写法,标签会被一个矩形框包住,如果不想要矩形框,可以自定义标签,如下代码:
<dxc:BarSideBySideSeries2D.Label>
<dxc:SeriesLabel
dxc:BarSideBySideSeries2D.LabelPosition="Outside"
ConnectorVisible="False"
ResolveOverlappingMode="Default"
Indent="20"
dxc:MarkerSeries2D.Angle="90"
Visible="True">
<dxc:SeriesLabel.ElementTemplate>
<DataTemplate>
<Border Background="Transparent" Opacity="0.75" CornerRadius="2">
<StackPanel>
<TextBlock Text="{Binding Path=Text}" Foreground="Red"/>
</StackPanel>
</Border>
</DataTemplate>
</dxc:SeriesLabel.ElementTemplate>
</dxc:SeriesLabel>
</dxc:BarSideBySideSeries2D.Label>
其中:
dxc:BarSideBySideSeries2D.LabelPosition="Outside" 为 设置 柱子数值标签显示的位置在顶上
ConnectorVisible="False" 为:不显示连接柱子和标签之间的线
Indent="20" 为标签到柱子顶端的距离(如果ConnectorVisible="True")
Devexpress系列一 之 ChartControl 柱形图BarSideBySideSeries2D的更多相关文章
- DevExpress WPF v19.1:Data Grid/Tree List等控件功能增强
行业领先的.NET界面控件DevExpress 日前正式发布v19.1版本,本站将以连载的形式介绍各版本新增内容.在本系列文章中将为大家介绍DevExpress WPF v19.1中新增的一些控件及部 ...
- WPF DevExpress 设置雷达图Radar样式
DevExpress中定义的ChartControl很不错,很多项目直接使用这种控件. 本节讲述雷达图的样式设置 <Grid> <Grid.Resources> <D ...
- 在项目中代替DevExpress(一)
从Delphi时代开始一直都是DevExpress系列控件的忠实用户,到现在已经有10多个年头了.DevExpress里面的控件基本从头到尾都用过一次,而且也开发过很多基于DevExpress的子控件 ...
- DevExpress 控件使用之XtraReport
DevExpress 系列控件,相信大家做WinForm开发已经再熟悉不过了.报表工具对大家来说,选择面很广,.net 本身也提供了非常好的设计工具.下面主要介绍通过DevExpress XtraRe ...
- 【转】Devexpress使用之:GridControl控件(合并表头)
Devexpress系列控件功能很强大,使用起来也不太容易,我也是边摸索边使用,如果有时间我会把常用控件的使用方法整理出来的. using System; using System.Collectio ...
- DevExpress 控件中GridControl的使用
近期开发用到了DevExpress系列的控件,GridControl是我用到的Dev系列控件最多的一个控件.现在先来总结一下: 首先先写一个简单的小例子来简单介绍一下GridControl的用法: 1 ...
- Devexpress使用之:GridControl控件
Devexpress使用之:GridControl控件 Devexpress系列控件功能很强大,使用起来也不太容易,我也是边摸索边使用,如果有时间我会把常用控件的使用方法整理出来的. using Sy ...
- 通过直接编码添加折线图到ChartControl
https://documentation.devexpress.com/#WindowsForms/CustomDocument2976 ChartControl lineChart = new C ...
- dev ChartControl 备忘
一个chartControl 里包括以个diagram(图表) diagram里可以设置 x-axis与y-axis ,另外还可以设置SecondaryXAxis与SecondaryYAxis,在Se ...
随机推荐
- pig和mysql脚本对比
测试数据位于:/home/hadoop/luogankun/workspace/sync_data/pig dept和emp表来源自oracle数据库自带的表 dept.txt ACCOUNTING ...
- 学习MongoDB 一:MongoDB 入门(安装与配置)
一.简介 MongoDB一种非关系型数据库(NoSql),是一种强大.灵活.可扩展的数据存储方式,因为MongoDB是文档模型,自由灵活很高,可以让你在开发过程中畅顺无比,对于大数据量.高并发.弱事务 ...
- JQ树插件 — zTree笔记
1.zTree作者很贴心的为使用者将不同功能的代码封装成不同的文件,方便大家尽量减少加载的代码量,如果基本全用到,则不必一个个引用,有一个文件“jquery.ztree.all.js”,包含了所有.如 ...
- Executor框架(七)Future 接口、FutureTask类
Future接口介绍 Future 表示异步计算的结果.它提供了检查计算是否完成的方法,以等待计算的完成,并获取计算的结果. Future 一般由 ExecutorService 的submi ...
- filter实例
最近在学习filter,看完理论知识之后,就特地在实际工作中的系统中去验证. SSP系统实例如下: 1.在web.xml中寻找 filter的配置信息 如下: <filter> < ...
- 配置Ubuntu虚拟环境
1.ubuntu默认root用户没有激活,激活root用户,就要为root用户创建密码 $sudo passwd root 2.修改主机名 $vi /etc/hostname 3.安装ssh服 ...
- mysql数据库的维护,备份和复制
在数据库运行时维护数据库 执行mysql数据库维护的方法之一就是连接mysql服务器,并告诉它做什么事, 如对myisam数据表进行检查或者修复, 可以使用check table tbname或rep ...
- as3 文档类引用
/**文档类引用**/ public static var main:CoverMain; public function CoverMain() { main=this; }
- UI5-文档-4.25-Sorting and Grouping
为了使我们的发票列表更加用户友好,我们将它按字母顺序排序,而不是仅仅显示来自数据模型的顺序.此外,我们还引入了组,并添加了发布产品的公司,以便更容易使用数据. Preview The list is ...
- Qt-状态机
//以下示例是QT示例中的appchooser例子,使用状态机来进行图标的交互. #include <QtCore> #include <QtWidgets> class Pi ...