如何实现一个条形图
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,本篇文章为大家展示了如何实现一个条形图,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、先看效果二、本文背景有没有这种场景:开源控件库或者收费的控件库,条形图
千家信息网最后更新 2025年01月23日如何实现一个条形图
本篇文章为大家展示了如何实现一个条形图,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
一、先看效果
二、本文背景
有没有这种场景:开源控件库或者收费的控件库,条形图或者柱状图都非常强大,但我的业务就是不符合,就是要自己设计呢?本文通过简单的实现一个条形图功能,以后类似的统计图可以在这上面进行修改,原理是类似的。
三、代码实现
小编使用.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安全错误
数据库的锁怎样保障安全
c 创建数据库代码
数据库string长度限制
商城app软件开发
达梦数据库怎么回滚数据
数据库安全技术里面go
服务器到期了数据迁移
数据库查询语句面试
计算机网络技术计算题怎么做
区块链安全数据库
证书服务器网站安全证书已过期
数据库账号没权限访问文件夹
工业网络技术应聘什么职位
工业领域网络安全保障方案
ncbi四大数据库
论之语网络技术公司
西方互联网科技公司
华为笔记软件开发
网络安全规定负责统筹协调
网络安全信息化建设困难
苏州运营网络技术优势
华为x86是服务器吗
医院的软件开发岗
网络安全领导必要性
数据库中课程号查询
php 支持数据库类型
数据库远程接口
亚尚软件开发
钱多多软件开发
毁灭者显卡能用在服务器上吗
服务器开机自检卡17