如何实现一个条形图
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇文章为大家展示了如何实现一个条形图,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、先看效果二、本文背景有没有这种场景:开源控件库或者收费的控件库,条形图
千家信息网最后更新 2026年10月31日如何实现一个条形图
本篇文章为大家展示了如何实现一个条形图,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
一、先看效果
二、本文背景
有没有这种场景:开源控件库或者收费的控件库,条形图或者柱状图都非常强大,但我的业务就是不符合,就是要自己设计呢?本文通过简单的实现一个条形图功能,以后类似的统计图可以在这上面进行修改,原理是类似的。
三、代码实现
小编使用.Net Core 3.1创建的WPF工程,创建名称为"BarChart"的解决方案后,添加名称为"Bar"的WPF用户控件,这个控件就是上图中的单个柱子,下面是Bar.xaml代码
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
MinHeight="20" Width="Auto" Loaded="UserControl_Loaded">
Bar.xaml.cs代码,主要是绑定前景色及背景色,及柱子百分比值。
using System.ComponentModel;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
namespace BarChart
{
///
/// BarChart.xaml 的交互逻辑
///
public partial class Bar : UserControl, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
private double _value;
public double Value
{
get { return _value; }
set
{
_value = value;
UpdateBarHeight();
NotifyPropertyChanged("Value");
}
}
private double maxValue;
public double MaxValue
{
get { return maxValue; }
set
{
maxValue = value;
UpdateBarHeight();
NotifyPropertyChanged("MaxValue");
}
}
private double barHeight;
public double BarHeight
{
get { return barHeight; }
set
{
barHeight = value;
NotifyPropertyChanged("BarHeight");
}
}
private Brush color;
public Brush Color
{
get { return color; }
set
{
color = value;
NotifyPropertyChanged("Color");
}
}
private void UpdateBarHeight()
{
if (maxValue > 0)
{
var percent = (_value * 100) / maxValue;
BarHeight = (percent * this.ActualHeight) / 100;
}
}
public Bar()
{
InitializeComponent();
this.DataContext = this;
color = Brushes.Black;
}
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
UpdateBarHeight();
}
private void Grid_SizeChanged(object sender, SizeChangedEventArgs e)
{
UpdateBarHeight();
}
}
}
主窗体MainWindow.xaml,添加显示的业务数据,目前只是展示了进度值,其他标签只要你看懂了代码,很好加的,比如每根柱子,上面颜色显示一种意义名称、下面显示另一种意义名称。
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:local="clr-namespace:BarChart"
mc:Ignorable="d"
Background="#FF252525" FontFamily="Nontserrrat"
Title="MainWindow" Height="600" Width="1080" WindowStyle="None" ResizeMode="NoResize" WindowStartupLocation="CenterScreen">
Foreground="White" FontSize="24"/>
HorizontalAlignment="Left" Margin="20" Background="White"
BorderBrush="Gray" CornerRadius="12">
上述内容就是如何实现一个条形图,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。
条形
代码
名称
就是
控件
柱子
业务
内容
意义
技能
知识
背景
强大
简明
简明扼要
上图
功能
单个
原理
只是
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
咖啡豆
河南云网互联网络科技有限公司
互联网 科技创业
互联网与新科技
润盈互联网科技
互联网科技公司做什么
镁科技互联网资讯平台
盛创互联网科技有限公司
互联网科技创新企业排名
哈尔滨秒房互联网科技有限公司
互联网科技公司招聘
上海电发互联网科技有限公司
福州新华互联网科技学校 知乎
成都互联网科技公司工作好不好
深圳育鹏互联网科技有限公司招聘
保险科技服务互联网营销体系
四川互联网展示科技馆设计
第三届互联网大会安防黑科技
恒生互联网科技趋势
科技互联网企业在行动
西安纸贵互联网科技有限公司
重生之互联网科技帝国
互联网科技金融
互联网企业和科技型企业
中国科技创新与世界互联网大会
锡山区互联网智能科技产品供应
杭州披云加互联网科技有限公司
广东鹅鹅鹅互联网科技有限公司
唐山双旺合互联网科技产业园
优雇互联网科技有限公司