如何实现一个条形图
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,本篇文章为大家展示了如何实现一个条形图,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、先看效果二、本文背景有没有这种场景:开源控件库或者收费的控件库,条形图
千家信息网最后更新 2025年12月02日如何实现一个条形图
本篇文章为大家展示了如何实现一个条形图,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
一、先看效果
二、本文背景
有没有这种场景:开源控件库或者收费的控件库,条形图或者柱状图都非常强大,但我的业务就是不符合,就是要自己设计呢?本文通过简单的实现一个条形图功能,以后类似的统计图可以在这上面进行修改,原理是类似的。
三、代码实现
小编使用.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安全错误
数据库的锁怎样保障安全
阿比迪斯服务器
软件开发中院管辖
数据库表中
苹果怎么给软件开发流量
奉贤区智能网络技术开发专业服务
北京建行软件开发招聘信息
软件开发调查报告
面向对象软件开发技术
校友访问武大图书馆数据库
定位app软件开发
服务器电源状态怎么检查
同城交友社交软件开发说明
怎么弄私人服务器
联想服务器主机编号
远程服务器很卡
复古服务器登录不了
网络安全兴起的原因
网络安全 模拟实验
兰州共享充电软件开发公司
武汉科领软件开发招聘
安徽品质软件开发服务价格优惠
刀片服务器维修保养
江苏数据库外泌体服务
智能家庭软件开发部前景怎么样
app 数据库 设计
诚聘软件开发工程师
公共文化服务体系建设数据库
日本网络技术不高
发明数据库的公司
wind数据库筛选功能用不了了