关于 syncfusion-winforms-smith-chart
此技能介绍 Syncfusion Windows Forms 的 Smith Chart 控件,面向需要分析传输线及高频电路参数的开发者。它支持阻抗和导纳视图,并提供数据系列、标记、图例、提示及坐标轴配置指南。
主要功能
- 01阻抗与导纳渲染模式
- 02数据绑定与多系列绘图
- 03可配置标记和数据标签
- 04交互式图例与系列切换
- 05自定义工具提示
- 06坐标轴与网格线设置
适用场景
- 01分析射频电路阻抗
- 02可视化传输线参数
- 03比较多个电路配置
- 04交互式探索图表数据
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ syncfusion/ winforms-ui-components-skills --skill syncfusion-winforms-smith-chart安装后在 Claude Code 中输入/syncfusion-winforms-smith-chart确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/appearance-styling.mdaxes-configuration.mddata-markers.mdgetting-started.mdlegend-customization.mdperformance-optimization.mdrendering-modes.mdseries-configuration.mduser-interactions.md详细介绍
实现史密斯圆图
Syncfusion Windows Forms 史密斯圆图是高频电路应用中最实用的数据可视化工具之一。它包含两组圆,用于绘制传输线参数。
何时使用此技能
当用户需要执行以下操作时,请使用此技能:
- 可视化传输线的阻抗或导纳
- 为高频电路应用创建史密斯圆图
- 绘制归一化电阻和电抗值
- 显示归一化电导和电纳值
- 构建 RF 工程可视化工具
- 分析传输线参数
- 创建交互式电路分析图表
- 在圆形图上实现带数据标记的线条序列
关键指标: 用户提及“史密斯圆图”、“SfSmithChart”、“阻抗”、“导纳”、“传输线”、“电抗”、“电阻”、“RF”、“高频电路”,或提到电路参数可视化。
组件概述
Syncfusion Windows Forms 史密斯圆图(SfSmithChart)是一种专用数据可视化控件,用于绘制传输线参数。它由两组圆构成:
- 阻抗模式: 归一化电阻圆和电抗曲线
- 导纳模式: 归一化电导圆和电纳曲线
主要功能
- 双渲染模式: 在阻抗和导纳可视化之间切换
- 线条序列: 使用可自定义的线条样式和颜色绘制数据
- 数据标记: 支持多种形状(圆形、矩形、菱形)和图像
- 交互式图例: 切换序列可见性,并自定义位置
- 工具提示: 可配置自定义格式的工具提示
- 坐标轴自定义: 控制主网格线、次网格线、标签和样式
- 数据标签: 智能对齐,并自动添加连接线
- 外观: 多种调色板和全面的样式控制
- 性能: 使用 BeginUpdate/EndUpdate 针对大型数据集进行优化
文档与导航指南
入门
📄 阅读: references/getting-started.md
- 程序集部署和 NuGet 包安装
- 通过 Visual Studio 设计器添加史密斯圆图
- 通过代码以编程方式添加史密斯圆图
- 必需的命名空间导入
- 使用 DataSource、ResistanceMember、ReactanceMember 进行数据绑定
- 直接向序列添加数据点
- 图表的基本初始化和首次渲染
- 使用 Text 属性添加标题
序列与数据配置
📄 阅读: references/series-configuration.md
- 创建和配置 LineSeries
- 数据绑定属性(DataSource、ResistanceMember、ReactanceMember)
- 线条自定义(Interior 颜色、StrokeWidth、DashStyle)
- 序列可见性控制
- 使用 ArrangeByIndex 属性绘制数据
- 多个序列的支持和管理
数据标记
📄 阅读: references/data-markers.md
- 使用 MarkerVisible 属性启用标记
- 标记形状(Rectangle、Circle、Diamond 等)
- 标记自定义(大小、颜色、边框)
- 使用图像作为自定义标记
- 数据标签概述和智能对齐
- 自动添加连接线以避免标签重叠
坐标轴配置
📄 阅读: references/axes-configuration.md
- 表示电阻/电导值的水平坐标轴
- 表示电抗/电纳值的径向坐标轴
- 主网格线的可见性和样式
- 次网格线配置和数量
- 坐标轴线外观自定义
- 标签位置(图表区域内/外)
- 标签相交操作,用于处理标签重叠
- 用于自定义标签文本的 LabelCreated 事件
图例自定义
📄 阅读: references/legend-customization.md
- 系列的图例可见性和 LegendText
- 使用 DockPosition(Top、Bottom、Left、Right)设置位置
- 图例图标类型和大小
- 对齐选项(Near、Far、Center)
- 样式自定义(颜色、边框、间距)
- 交互式切换系列可见性
- 多个系列的滚动条和 WrapItems
外观和样式
📄 阅读: references/appearance-styling.md
- 图表调色板(Metro、Nature 等)
- 系列级调色板自定义
- 图表区域背景和边框样式
- 调整圆半径
- BackColor 和 ChartAreaBackColor 属性
用户交互
📄 阅读: references/user-interactions.md
- 工具提示的可见性和配置
- 使用占位符设置工具提示格式
- 用于自定义外观的 TooltipOptions
- 用于动态内容的 TooltipOpening 事件
- 自定义工具提示文本和样式
渲染模式
📄 阅读: references/rendering-modes.md
- 阻抗模式与导纳模式
- 配置 RenderingMode 属性
- 了解电阻/电抗圆
- 了解电导/电纳圆
- 特定模式的数据解读
性能优化
📄 阅读: references/performance-optimization.md
- BeginUpdate 和 EndUpdate 方法
- 优化大型数据集
- 添加多个数据点的最佳实践
- 更新期间暂停图表重绘
快速入门示例
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Collections.ObjectModel;
using Syncfusion.WinForms.SmithChart;
public class SmithChartExample : Form
{
public SmithChartExample()
{
// Create Smith Chart
SfSmithChart chart = new SfSmithChart();
chart.Text = "Impedance Transmission";
chart.BackColor = Color.White;
// Configure axes
chart.HorizontalAxis.MinorGridlinesVisible = true;
chart.RadialAxis.MinorGridlinesVisible = true;
// Create series with data
LineSeries series = new LineSeries();
series.MarkerVisible = true;
series.LegendText = "Transmission1";
series.TooltipVisible = true;
series.DataSource = GetTransmissionData();
series.ResistanceMember = "Resistance";
series.ReactanceMember = "Reactance";
// Add series to chart
chart.Series.Add(series);
// Show legend
chart.Legend.Visible = true;
// Add chart to form
this.Controls.Add(chart);
}
private ObservableCollection<TransmissionData> GetTransmissionData()
{
var data = new ObservableCollection<TransmissionData>();
data.Add(new TransmissionData { Resistance = 0, Reactance = 0.05 });
data.Add(new TransmissionData { Resistance = 0.3, Reactance = 0.1 });
data.Add(new TransmissionData { Resistance = 0.5, Reactance = 0.2 });
data.Add(new TransmissionData { Resistance = 1.0, Reactance = 0.4 });
data.Add(new TransmissionData { Resistance = 2.0, Reactance = 0.5 });
data.Add(new TransmissionData { Resistance = 3.5, Reactance = 0.0 });
data.Add(new TransmissionData { Resistance = 5, Reactance = -1.0 });
data.Add(new TransmissionData { Resistance = 10, Reactance = -10 });
return data;
}
}
public class TransmissionData
{
public double Resistance { get; set; }
public double Reactance { get; set; }
}
常见模式
通过 DataSource 添加数据
当你有一组数据对象时:
// Create data model
var model = new SmithChartModel();
// Configure series
LineSeries series = new LineSeries();
series.DataSource = model.TransmissionData;
series.ResistanceMember = "Resistance"; // Property name for X-axis
series.ReactanceMember = "Reactance"; // Property name for Y-axis
sfSmithChart.Series.Add(series);
直接添加数据点
适用于没有预定义集合的动态数据:
LineSeries series = new LineSeries();
series.MarkerVisible = true;
// Add individual points
series.Points.Add(0.5, 0.2);
series.Points.Add(1.0, 0.4);
series.Points.Add(2.0, 0.5);
sfSmithChart.Series.Add(series);
切换渲染模式
在阻抗模式和导纳模式之间切换:
// Impedance mode (default) - shows resistance and reactance
sfSmithChart.RenderingMode = RenderingMode.Impedance;
// Admittance mode - shows conductance and susceptance
sfSmithChart.RenderingMode = RenderingMode.Admittance;
自定义系列外观
LineSeries series = new LineSeries();
series.Interior = Color.Red; // Line color
series.StrokeWidth = 3; // Line thickness
series.DashStyle = DashStyle.Dash; // Line pattern
series.MarkerVisible = true; // Show markers
series.MarkerType = MarkerType.Circle; // Marker shape
series.MarkerBackColor = Color.Blue; // Marker fill
优化大型数据集的性能
sfSmithChart.BeginUpdate(); // Suspend repainting
LineSeries series = sfSmithChart.Series[0] as LineSeries;
for (int i = 0; i < 1000; i++)
{
series.Points.Add(GetResistance(i), GetReactance(i));
}
sfSmithChart.EndUpdate(); // Resume and repaint once
关键属性
SfSmithChart 属性
| Property | Type | Description |
|---|---|---|
Text | string | 显示在顶部的图表标题 |
RenderingMode | RenderingMode | 阻抗或导纳模式 |
HorizontalAxis | ChartAxis | 水平轴配置 |
RadialAxis | ChartAxis | 径向轴配置 |
Series | SeriesCollection | 图表系列集合 |
Legend | ChartLegend | 图例配置 |
Radius | float | 圆直径(0.1 到 1.0,默认值为 0.95) |
BackColor | Color | 图表背景色 |
LineSeries 属性
| Property | Type | Description |
|---|---|---|
DataSource | object | 要绑定的数据集合 |
ResistanceMember | string | 电阻/电导值对应的属性 |
ReactanceMember | string | 电抗/电纳值对应的属性 |
Interior | Color | 线条颜色 |
StrokeWidth | int | 线条粗细 |
DashStyle | DashStyle | 线条样式(Solid、Dash、Dot 等) |
MarkerVisible | bool | 显示/隐藏数据标记 |
MarkerType | MarkerType | 标记形状 |
TooltipVisible | bool | 启用工具提示 |
LegendText | string | 图例中显示的文本 |
Visible | bool | 显示/隐藏系列 |
ArrangeByIndex | bool | 按索引绘制,而非按电阻排序 |
ChartAxis 属性
| Property | Type | Description |
|---|---|---|
MajorGridlinesVisible | bool | 显示/隐藏主网格线 |
MinorGridlinesVisible | bool | 显示/隐藏次网格线 |
MinorGridlinesCount | int | 主网格线之间的次网格线数量 |
LabelPlacement | LabelPlacement | 图表区域内侧或外侧 |
LabelIntersectAction | LabelIntersectActions | 处理重叠标签(Hide) |
AxisLineVisible | bool | 显示/隐藏轴线 |
常见用例
高频电路分析
使用阻抗模式分析 RF 电路行为:
- 绘制测量得到的 S 参数
- 可视化匹配网络性能
- 分析天线阻抗特性
传输线可视化
显示传输线参数:
- 显示传输线上的归一化阻抗
- 绘制反射系数
- 可视化 VSWR 圆
多曲线对比
比较不同的电路配置:
- 添加具有不同 LegendText 的多个系列
- 为每个系列使用不同的颜色
- 使用 ToggleSeriesVisible 启用图例,以便进行交互式比较
交互式数据探索
为用户提供探索工具:
- 启用带自定义格式的工具提示
- 使用 TooltipOpening 事件生成动态内容
- 为关键点添加数据标签
- 允许通过图例切换系列
自定义标记可视化
突出显示特定数据点:
- 为每个系列使用不同的标记类型
- 为特殊点添加图像标记
- 自定义标记大小和颜色
故障排除
数据未显示
- 确保已设置
DataSource,且其中包含有效数据 - 验证
ResistanceMember和ReactanceMember与属性名称完全匹配(区分大小写) - 检查数据值是否在有效范围内
- 确认系列已添加到
sfSmithChart.Series集合中
大型数据集的性能问题
- 将点的添加操作放在
BeginUpdate()/EndUpdate()块中 - 如果不需要标记,请将其禁用(
MarkerVisible = false) - 对于超大型数据集,可考虑对数据进行采样
标签重叠
- 使用
LabelIntersectAction = LabelIntersectActions.Hide自动隐藏重叠标签 - 调整图表大小,或使用
LabelPlacement.Inside留出更多空间 - 智能对齐会自动处理数据标签重叠
图例未显示
- 设置
chart.Legend.Visible = true - 确保已为每个系列设置
LegendText属性 - 检查图表是否有足够空间根据
DockPosition显示图例