关于 syncfusion-winui-radial-gauge
为 Syncfusion WinUI Radial Gauge 提供圆形数据可视化实现指导,面向构建指标和测量界面的 WinUI 开发者。内容包括坐标轴、指针、范围、注释、动画及交互。
主要功能
- 01配置圆形坐标轴与刻度
- 02添加四种指针类型
- 03显示颜色区分的数值范围
- 04放置文本、图像和界面注释
- 05为数值变化添加动画并支持拖动
- 06显示多个坐标轴
适用场景
- 01制作速度或温度仪表
- 02显示 KPI 或进度指标
- 03构建可交互的音量控件
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ syncfusion/ winui-ui-components-skills --skill syncfusion-winui-radial-gauge安装后在 Claude Code 中输入/syncfusion-winui-radial-gauge确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/animation.mdannotations.mdapi-reference.mdaxis-configuration.mdgetting-started.mdpointers.mdranges.md详细介绍
实现径向仪表
Syncfusion WinUI 径向仪表(SfRadialGauge)是一种多用途数据可视化控件,可在圆形刻度上显示数值。它非常适合创建速度计、温度监视器、仪表盘仪表、计量仪表、多轴时钟、手表、活动仪表、指南针及其他圆形指示器。
何时使用此技能
在以下情况下使用此技能:
- 以圆形方式显示指标 - 速度计、转速表、燃油表、压力表
- 创建仪表盘指示器 - KPI 仪表、性能监视器、进度指示器
- 构建测量显示 - 温度监视器、湿度仪表、电压表
- 实现活动追踪器 - 健身环、进度圆环、目标追踪器
- 设计自定义表盘 - 指南针显示、钟面、方向指示器
- 直观显示范围 - 颜色编码区域(红/黄/绿)、危险/警告/安全区域
- 动态显示数值变化 - 使用指针动画实现平滑过渡
- 支持用户交互 - 可拖动指针以调整数值
- 显示多个指标 - 使用多轴仪表显示相关数据点
组件概览
主要功能:
- 圆形轴,具有可自定义的刻度、标签、刻度线和样式
- 四种指针类型 - 针形、形状、内容和范围指针
- 可视化范围 - 支持渐变的颜色编码区段
- 注释 - 添加文本、图像或自定义 UI 元素
- 动画 - 使用缓动函数实现平滑的指针移动
- 交互式拖动 - 用户可调整指针数值
- 多轴 - 在一个仪表中显示多个刻度
- 灵活样式 - 使用像素或比例设置尺寸,适用于响应式布局
文档与导航指南
入门
📄 阅读: references/getting-started.md
在以下情况下阅读:
- 安装并设置 Syncfusion WinUI 径向仪表
- 创建第一个径向仪表
- 添加基本轴、范围、指针和注释
- 了解组件结构
- 获取完整的可运行示例
轴配置
📄 阅读: references/axis-configuration.md
在以下情况下阅读:
- 配置轴的最小值、最大值和间隔
- 自定义起始角度和结束角度(180°、270°、360° 等)
- 调整轴半径和位置
- 设置轴线样式(宽度、颜色、渐变)
- 自定义标签(格式、模板、旋转、位置)
- 配置刻度线(主/次刻度线、长度、样式、位置)
- 显示/隐藏轴元素
- 实现多轴
- 创建自定义刻度范围
- 处理轴事件
指针
📄 阅读: references/pointers.md
在以下情况下阅读:
- 添加带有旋钮和尾部的针形指针
- 使用形状指针(圆形、菱形、三角形等)
- 创建带有自定义 UI 的内容指针
- 实现用于弧形区段的范围指针
- 在一个轴上添加多个指针
- 启用指针交互式拖动
- 为指针移动添加动画
- 处理指针数值更改事件
- 自定义指针外观和偏移量
范围
📄 阅读: references/ranges.md
在以下情况下阅读:
- 创建颜色编码数值范围
- 定义范围的起始值和结束值
- 自定义范围宽度(均匀或渐缩)
- 为范围应用渐变
- 设置范围位置(相对于轴的偏移量)
- 为范围添加标签
- 使用范围颜色设置轴元素
- 创建基于模板的范围标签
注释
📄 阅读: references/annotations.md
在以下情况下阅读:
- 在指定位置添加文本标签
- 在仪表上显示图像
- 使用角度或轴数值设置注释位置
- 调整注释与中心的距离
- 对齐注释(水平/垂直)
- 将自定义 UI 元素添加为注释
动画
📄 阅读: references/animation.md
适用于以下需求:
- 启用指针动画
- 控制动画时长
- 应用缓动函数(线性、弹跳、弹性等)
- 创建平滑的数值过渡
API 参考
📄 阅读: references/api-reference.md
适用于以下需求:
- 查找特定属性
- 了解类层次结构
- 查找可用的自定义选项
- 查阅完整的 API 文档
快速入门示例
以下是一个包含范围和指针的基本速度表:
<Window x:Class="RadialGaugeApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:gauge="using:Syncfusion.UI.Xaml.Gauges">
<gauge:SfRadialGauge>
<gauge:SfRadialGauge.Axes>
<gauge:RadialAxis Maximum="150"
Interval="10">
<gauge:RadialAxis.Ranges>
<gauge:GaugeRange StartValue="0"
EndValue="50"
Background="Green" />
<gauge:GaugeRange StartValue="50"
EndValue="100"
Background="Orange" />
<gauge:GaugeRange StartValue="100"
EndValue="150"
Background="Red" />
</gauge:RadialAxis.Ranges>
<gauge:RadialAxis.Pointers>
<gauge:NeedlePointer Value="90"
EnableAnimation="True" />
</gauge:RadialAxis.Pointers>
<gauge:RadialAxis.Annotations>
<gauge:GaugeAnnotation DirectionUnit="Angle"
DirectionValue="90"
PositionFactor="0.5">
<gauge:GaugeAnnotation.Content>
<TextBlock Text="90"
FontSize="25"
FontWeight="Bold" />
</gauge:GaugeAnnotation.Content>
</gauge:GaugeAnnotation>
</gauge:RadialAxis.Annotations>
</gauge:RadialAxis>
</gauge:SfRadialGauge.Axes>
</gauge:SfRadialGauge>
</Window>
using Syncfusion.UI.Xaml.Gauges;
using Microsoft.UI.Xaml;
namespace RadialGaugeApp
{
public sealed partial class MainWindow : Window
{
public MainWindow()
{
this.InitializeComponent();
// Can also create gauge programmatically
SfRadialGauge gauge = new SfRadialGauge();
RadialAxis axis = new RadialAxis();
axis.Maximum = 150;
axis.Interval = 10;
// Add ranges
axis.Ranges.Add(new GaugeRange {
StartValue = 0,
EndValue = 50,
Background = new SolidColorBrush(Colors.Green)
});
// Add pointer
axis.Pointers.Add(new NeedlePointer {
Value = 90,
EnableAnimation = true
});
gauge.Axes.Add(axis);
}
}
}
常见模式
模式 1:温度监视器
<gauge:SfRadialGauge>
<gauge:SfRadialGauge.Axes>
<gauge:RadialAxis Minimum="-60"
Maximum="60"
Interval="20"
StartAngle="180"
EndAngle="0">
<gauge:RadialAxis.Ranges>
<gauge:GaugeRange StartValue="-60"
EndValue="0"
Background="#2196F3" />
<gauge:GaugeRange StartValue="0"
EndValue="30"
Background="#4CAF50" />
<gauge:GaugeRange StartValue="30"
EndValue="60"
Background="#FF5722" />
</gauge:RadialAxis.Ranges>
<gauge:RadialAxis.Pointers>
<gauge:RangePointer Value="25"
PointerWidth="15"
EnableAnimation="True" />
</gauge:RadialAxis.Pointers>
<gauge:RadialAxis.Annotations>
<gauge:GaugeAnnotation>
<gauge:GaugeAnnotation.Content>
<TextBlock Text="25°C"
FontSize="30"
FontWeight="Bold" />
</gauge:GaugeAnnotation.Content>
</gauge:GaugeAnnotation>
</gauge:RadialAxis.Annotations>
</gauge:RadialAxis>
</gauge:SfRadialGauge.Axes>
</gauge:SfRadialGauge>
模式 2:可交互的可拖动仪表
<gauge:SfRadialGauge>
<gauge:SfRadialGauge.Axes>
<gauge:RadialAxis ShowTicks="False"
AxisLineFill="CornflowerBlue"
AxisLineWidth="30">
<gauge:RadialAxis.Pointers>
<gauge:ShapePointer Value="60"
IsInteractive="True"
MarkerOffset="-30"
Background="Indigo"
ValueChanged="Pointer_ValueChanged" />
</gauge:RadialAxis.Pointers>
</gauge:RadialAxis>
</gauge:SfRadialGauge.Axes>
</gauge:SfRadialGauge>
private void Pointer_ValueChanged(object sender, ValueChangedEventArgs e)
{
// Handle pointer value changes
Debug.WriteLine($"New value: {e.Value}");
}
模式 3:多轴时钟
<gauge:SfRadialGauge>
<gauge:SfRadialGauge.Axes>
<gauge:RadialAxis Maximum="12"
Interval="1"
RadiusFactor="0.8"
LabelPosition="Outside">
<gauge:RadialAxis.Pointers>
<gauge:NeedlePointer Value="10"
NeedleLength="0.5"
NeedleEndWidth="8" />
</gauge:RadialAxis.Pointers>
</gauge:RadialAxis>
<gauge:RadialAxis Maximum="60"
Interval="5"
RadiusFactor="0.95"
LabelPosition="Outside">
<gauge:RadialAxis.Pointers>
<gauge:NeedlePointer Value="35"
NeedleLength="0.7"
NeedleEndWidth="4" />
</gauge:RadialAxis.Pointers>
</gauge:RadialAxis>
</gauge:SfRadialGauge.Axes>
</gauge:SfRadialGauge>
模式 4:带百分比的进度环
<gauge:SfRadialGauge>
<gauge:SfRadialGauge.Axes>
<gauge:RadialAxis ShowLabels="False"
ShowTicks="False"
StartAngle="270"
EndAngle="270"
Maximum="100"
AxisLineWidth="20"
AxisLineFill="LightGray">
<gauge:RadialAxis.Pointers>
<gauge:RangePointer Value="73"
PointerWidth="20"
Background="#4CAF50"
CornerStyle="BothCurve"
EnableAnimation="True" />
</gauge:RadialAxis.Pointers>
<gauge:RadialAxis.Annotations>
<gauge:GaugeAnnotation>
<gauge:GaugeAnnotation.Content>
<TextBlock>
<Run Text="73" FontSize="40" FontWeight="Bold" />
<Run Text="%" FontSize="20" />
</TextBlock>
</gauge:GaugeAnnotation.Content>
</gauge:GaugeAnnotation>
</gauge:RadialAxis.Annotations>
</gauge:RadialAxis>
</gauge:SfRadialGauge.Axes>
</gauge:SfRadialGauge>
按类别划分的关键属性
SfRadialGauge
Axes- RadialAxis 对象集合CanScaleToFit- 根据起始角度和结束角度调整轴的位置
轴配置
Minimum/Maximum- 轴的数值范围Interval- 标签之间的间距StartAngle/EndAngle- 圆弧角度(0-360°)RadiusFactor- 轴的大小(可用空间的 0-1 倍)IsInversed- 逆时针方向
轴样式
AxisLineWidth/AxisLineWidthUnit- 线条粗细(Pixel/Factor)AxisLineFill- 线条颜色/画刷GradientStops- 轴线上渐变的颜色ShowAxisLine- 轴线可见性
标签与刻度
ShowLabels/ShowTicks- 元素可见性LabelFormat- 数字格式(货币、百分比等)LabelTemplate- 自定义标签模板LabelPosition/TickPosition- 内侧/外侧/跨轴LabelOffset/TickOffset- 与轴的距离MajorTickLength/MinorTickLength- 刻度长度MinorTicksPerInterval- 次刻度数量
指针(所有类型)
Value- 当前指针数值EnableAnimation- 数值变化时播放动画AnimationDuration- 动画时长(ms)AnimationEasingFunction- 缓动函数IsInteractive- 启用拖动
针形指针专属
NeedleLength/NeedleStartWidth/NeedleEndWidth- 针形KnobRadius/KnobFill/KnobStroke- 中心旋钮TailLength/TailWidth- 指针尾部
形状指针专属
ShapeType- 圆形、菱形、三角形等ShapeHeight/ShapeWidth- 形状大小MarkerOffset- 与轴的距离
范围指针专属
PointerWidth- 圆弧宽度CornerStyle- BothFlat、BothCurve、StartCurve、EndCurve
范围
StartValue/EndValue- 范围边界StartWidth/EndWidth- 范围粗细WidthUnit- 像素或比例RangeOffset- 与轴的距离Background- 范围颜色GradientStops- 渐变颜色Label/LabelTemplate- 范围标签
注释
DirectionUnit- 角度或轴值DirectionValue- 位置值PositionFactor- 与中心的距离(0-1)Content- 任意 UIElement
常见用例
- 速度表/转速表 - 显示车辆速度/RPM,并用颜色标示危险区域
- 温度计 - 带有低温/适中/高温范围的温度监视器
- 压力计 - 用于轮胎压力、液压压力,并显示阈值指示
- 电池电量 - 带百分比注释的圆形电池指示器
- 健身追踪器 - 显示步数、卡路里和距离的活动环
- KPI 仪表盘 - 带有目标阈值的业务指标
- 音量控制 - 可拖动的圆形音量调节器
- 罗盘 - 带有度数刻度的方向仪表
- 计时器/秒表 - 可视化已用时间
- 进度指示器 - 任务完成进度、下载进度
- 评分显示 - 可视化分数(1-10 分制)
- 多指标显示 - 使用多个轴显示相关测量值
备注
- 所有尺寸属性都支持 Pixel 或 Factor 单位,适用于响应式布局
- Factor 值(0-1)会乘以轴半径,以实现按比例调整尺寸
- 更新值时使用 animations 实现平滑过渡
- 启用 IsInteractive,支持用户拖动并调整指针
- 多个轴可以共享同一中心,并使用不同的半径系数
- GradientStops 根据轴值实现平滑的颜色过渡
- 注释可以包含任意 WinUI UIElement(TextBlock、Image、Grid 等)
安装: 安装 Syncfusion.Gauge.WinUI NuGet 包
命名空间: Syncfusion.UI.Xaml.Gauges
GitHub 示例: WinUI Radial Gauge Demos
评论
支持 Markdown