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 ...
随机推荐
- 【洛谷】P1357 花园(状压+矩阵快速幂)
题目 传送门:QWQ 分析 因为m很小,考虑把所有状态压成m位二进制数. 那么总状态数小于$ 2^5 $. 如果状态$ i $能转移到$ j $,那么扔进一个矩阵,n次方快速幂一下. 答案是对角线之和 ...
- (c#) 销毁资源和释放内存
0. 什么是资源? .NET 框架中如何访问资源? 所谓的资源就是程序中可利用的数据,譬如:字符串.图片和任何二进制数据,包括任何类型的文件. 在面向对象的环境中,每一个类型都标识为某些程序所用的资源 ...
- 关于Mongodb的全面总结
MongoDB的内部构造<MongoDB The Definitive Guide> MongoDB的官方文档基本是how to do的介绍,而关于how it worked却少之又少,本 ...
- VC字符串转换常用函数
最近在做一些关于VC的ActiveX小插件,经常会遇到字符串处理的问题,狂查CSDN和MSDN,结果并不理想.先说明一下,相关处理函数在VC++6.00测试通过.也许很多人不能理解,现在都什么年代了, ...
- [Dart] Flutter 上传文件
/** * 请求响应数据 */ class MsgResponse { int code; // 状态代码,0 表示没有错误 Object data; // 数据内容,一般为字符串 String er ...
- jquery函数写法
普通jquery函数写法 <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script&g ...
- leetcode938
class Solution: def __init__(self): self.li = [] def midSearch(self,node): if(node != None): self.mi ...
- DEMO: springboot 与 mybatis 集成
之前一直在用springMVC,接触到springboot之后,感觉使用起来方便多了,没那多xml需要配置. 先来看看整个项目结构,当然是maven项目. 1.测试数据 DROP TABLE IF E ...
- Oracle12c部署
部署环境业务系统与数据库服务部署在一台服务器上了 电脑是台式机没有网络,也没有插网线,需要先建立一个网络回环,然后进行Oracle12c的安装,安装过程中系统会默认勾选创建为容器数据库,需要把这个勾选 ...
- HttpClient获取返回类型为JSON或XML的数据
Java_HttpClient获取返回类型为JSON或XML的数据 原创 2017年04月06日 17:38:29 706 HttpClient 获取返回类型为JSON或XML的数据 使用httpco ...