syncfusion-winforms-smith-chart
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseImplementing Smith Charts
实现史密斯图
The Syncfusion Windows Forms Smith chart is one of the most useful data visualization tools for high frequency circuit applications. It contains two sets of circles to plot the parameters of transmission lines.
Syncfusion Windows Forms 史密斯图是面向高频电路应用最实用的数据可视化工具之一,它包含两组圆形图层来绘制传输线参数。
When to Use This Skill
何时使用该技能
Use this skill when the user needs to:
- Visualize impedance or admittance of transmission lines
- Create Smith Charts for high-frequency circuit applications
- Plot normalized resistance and reactance values
- Display normalized conductance and susceptance values
- Build RF engineering visualization tools
- Analyze transmission line parameters
- Create interactive circuit analysis charts
- Implement line series with data markers on circular plots
Key indicators: User mentions "Smith Chart", "SfSmithChart", "impedance", "admittance", "transmission line", "reactance", "resistance", "RF", "high-frequency circuit", or references circuit parameter visualization.
当用户需要完成以下需求时使用本技能:
- 可视化传输线的阻抗或导纳
- 为高频电路应用创建史密斯图
- 绘制归一化电阻和电抗值
- 展示归一化电导和电纳值
- 搭建RF工程可视化工具
- 分析传输线参数
- 创建交互式电路分析图表
- 在圆形绘图上实现带数据标记的折线系列
关键识别词: 用户提及"Smith Chart"、"SfSmithChart"、"impedance(阻抗)"、"admittance(导纳)"、"transmission line(传输线)"、"reactance(电抗)"、"resistance(电阻)"、"RF"、"high-frequency circuit(高频电路)",或者提及电路参数可视化相关内容。
Component Overview
组件概述
The Syncfusion Windows Forms Smith Chart (SfSmithChart) is a specialized data visualization control for plotting transmission line parameters. It consists of two families of circles:
- Impedance mode: Normalized resistance circles and reactance curves
- Admittance mode: Normalized conductance circles and susceptance curves
Syncfusion Windows Forms Smith Chart (SfSmithChart) 是专门用于绘制传输线参数的专业数据可视化控件,由两类圆形图层组成:
- 阻抗模式: 归一化电阻圆和电抗曲线
- 导纳模式: 归一化电导圆和电纳曲线
Key Features
核心功能
- Dual Rendering Modes: Switch between impedance and admittance visualization
- Line Series: Plot data with customizable line styles and colors
- Data Markers: Various shapes (circle, rectangle, diamond) with image support
- Interactive Legends: Toggle series visibility, customizable positioning
- Tooltips: Configurable tooltips with custom formatting
- Axes Customization: Control major/minor gridlines, labels, and styling
- Data Labels: Smart alignment with automatic connector lines
- Appearance: Multiple color palettes and full styling control
- Performance: Optimized for large datasets with BeginUpdate/EndUpdate
- 双渲染模式: 可在阻抗和导纳可视化模式之间切换
- 折线系列: 可自定义线条样式和颜色绘制数据
- 数据标记: 支持圆形、矩形、菱形等多种形状,支持自定义图片
- 交互式图例: 可切换系列可见性,支持自定义位置
- 工具提示: 可配置工具提示,支持自定义格式
- 坐标轴自定义: 可控制主/次网格线、标签和样式
- 数据标签: 智能对齐,支持自动连接线
- 外观配置: 多套配色方案,支持完整样式控制
- 性能优化: 针对大数据集优化,支持BeginUpdate/EndUpdate机制
Documentation and Navigation Guide
文档与导航指南
Getting Started
入门指南
📄 Read: references/getting-started.md
- Assembly deployment and NuGet package installation
- Adding Smith Chart via Visual Studio designer
- Adding Smith Chart programmatically through code
- Required namespace imports
- Data binding with DataSource, ResistanceMember, ReactanceMember
- Adding data points directly to series
- Basic chart initialization and first render
- Adding title with Text property
📄 阅读: references/getting-started.md
- 程序集部署和NuGet包安装
- 通过Visual Studio设计器添加史密斯图
- 通过代码编程方式添加史密斯图
- 所需命名空间导入
- 使用DataSource、ResistanceMember、ReactanceMember实现数据绑定
- 直接向系列中添加数据点
- 基础图表初始化和首次渲染
- 通过Text属性添加标题
Series and Data Configuration
系列与数据配置
📄 Read: references/series-configuration.md
- LineSeries creation and configuration
- Data binding properties (DataSource, ResistanceMember, ReactanceMember)
- Line customization (Interior color, StrokeWidth, DashStyle)
- Series visibility control
- Data plotting with ArrangeByIndex property
- Multiple series support and management
📄 阅读: references/series-configuration.md
- LineSeries创建与配置
- 数据绑定属性(DataSource、ResistanceMember、ReactanceMember)
- 线条自定义(填充色、线宽、虚线样式)
- 系列可见性控制
- 通过ArrangeByIndex属性控制数据绘制逻辑
- 多系列支持与管理
Data Markers
数据标记
📄 Read: references/data-markers.md
- Enabling markers with MarkerVisible property
- Marker shapes (Rectangle, Circle, Diamond, etc.)
- Marker customization (size, colors, borders)
- Using images as custom markers
- Data labels overview and smart alignment
- Automatic connector lines for label collision avoidance
📄 阅读: references/data-markers.md
- 通过MarkerVisible属性启用标记
- 标记形状(矩形、圆形、菱形等)
- 标记自定义(尺寸、颜色、边框)
- 使用图片作为自定义标记
- 数据标签概述与智能对齐
- 自动连接线避免标签重叠
Axes Configuration
坐标轴配置
📄 Read: references/axes-configuration.md
- Horizontal axis for resistance/conductance values
- Radial axis for reactance/susceptance values
- Major gridlines visibility and styling
- Minor gridlines configuration and count
- Axis line appearance customization
- Label placement (inside/outside chart area)
- Label intersect action for overlapping labels
- LabelCreated event for custom label text
📄 阅读: references/axes-configuration.md
- 用于电阻/电导值的水平坐标轴
- 用于电抗/电纳值的径向坐标轴
- 主网格线可见性和样式设置
- 次网格线配置与数量设置
- 轴线外观自定义
- 标签位置(图表区域内侧/外侧)
- 标签重叠处理策略
- 用于自定义标签文本的LabelCreated事件
Legend Customization
图例自定义
📄 Read: references/legend-customization.md
- Legend visibility and LegendText for series
- Positioning with DockPosition (Top, Bottom, Left, Right)
- Legend icon types and sizing
- Alignment options (Near, Far, Center)
- Style customization (colors, borders, spacing)
- Interactive toggle for series visibility
- Scrollbar and WrapItems for multiple series
📄 阅读: references/legend-customization.md
- 图例可见性与系列的LegendText设置
- 通过DockPosition设置位置(上、下、左、右)
- 图例图标类型与尺寸设置
- 对齐选项(靠近、远离、居中)
- 样式自定义(颜色、边框、间距)
- 交互式切换系列可见性
- 多系列下的滚动条和自动换行支持
Appearance and Styling
外观与样式
📄 Read: references/appearance-styling.md
- Chart color palettes (Metro, Nature, etc.)
- Series-level palette customization
- Chart area background and border styling
- Circle radius adjustment
- BackColor and ChartAreaBackColor properties
📄 阅读: references/appearance-styling.md
- 图表配色方案(Metro、Nature等)
- 系列级配色自定义
- 图表区域背景和边框样式
- 圆形半径调整
- BackColor和ChartAreaBackColor属性配置
User Interactions
用户交互
📄 Read: references/user-interactions.md
- Tooltip visibility and configuration
- Tooltip formatting with placeholders
- TooltipOptions for appearance customization
- TooltipOpening event for dynamic content
- Custom tooltip text and styling
📄 阅读: references/user-interactions.md
- 工具提示可见性与配置
- 带占位符的工具提示格式化
- 用于外观自定义的TooltipOptions
- 用于动态内容的TooltipOpening事件
- 自定义工具提示文本和样式
Rendering Modes
渲染模式
📄 Read: references/rendering-modes.md
- Impedance vs Admittance modes
- RenderingMode property configuration
- Understanding resistance/reactance circles
- Understanding conductance/susceptance circles
- Mode-specific data interpretation
📄 阅读: references/rendering-modes.md
- 阻抗模式与导纳模式对比
- RenderingMode属性配置
- 理解电阻/电抗圆
- 理解电导/电纳圆
- 不同模式下的数据解读
Performance Optimization
性能优化
📄 Read: references/performance-optimization.md
- BeginUpdate and EndUpdate methods
- Optimizing for large datasets
- Best practices for adding multiple points
- Suspending chart repaints during updates
📄 阅读: references/performance-optimization.md
- BeginUpdate和EndUpdate方法
- 大数据集优化
- 添加多数据点的最佳实践
- 更新期间暂停图表重绘
Quick Start Example
快速入门示例
csharp
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; }
}csharp
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; }
}Common Patterns
常用模式
Adding Data via DataSource
通过DataSource添加数据
When you have a collection of data objects:
csharp
// 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);当你有数据对象集合时使用:
csharp
// 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);Adding Data Points Directly
直接添加数据点
For dynamic data without a predefined collection:
csharp
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);适用于没有预定义集合的动态数据场景:
csharp
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);Switching Rendering Modes
切换渲染模式
Toggle between impedance and admittance:
csharp
// Impedance mode (default) - shows resistance and reactance
sfSmithChart.RenderingMode = RenderingMode.Impedance;
// Admittance mode - shows conductance and susceptance
sfSmithChart.RenderingMode = RenderingMode.Admittance;在阻抗和导纳模式之间切换:
csharp
// Impedance mode (default) - shows resistance and reactance
sfSmithChart.RenderingMode = RenderingMode.Impedance;
// Admittance mode - shows conductance and susceptance
sfSmithChart.RenderingMode = RenderingMode.Admittance;Customizing Series Appearance
自定义系列外观
csharp
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 fillcsharp
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 fillPerformance for Large Datasets
大数据集性能优化
csharp
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 oncecsharp
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 onceKey Properties
核心属性
SfSmithChart Properties
SfSmithChart 属性
| Property | Type | Description |
|---|---|---|
| string | Chart title displayed at the top |
| RenderingMode | Impedance or Admittance mode |
| ChartAxis | Horizontal axis configuration |
| ChartAxis | Radial axis configuration |
| SeriesCollection | Collection of chart series |
| ChartLegend | Legend configuration |
| float | Circle diameter (0.1 to 1.0, default 0.95) |
| Color | Chart background color |
| 属性 | 类型 | 说明 |
|---|---|---|
| string | 显示在顶部的图表标题 |
| RenderingMode | 阻抗或导纳模式 |
| ChartAxis | 水平坐标轴配置 |
| ChartAxis | 径向坐标轴配置 |
| SeriesCollection | 图表系列集合 |
| ChartLegend | 图例配置 |
| float | 圆形直径(取值0.1到1.0,默认0.95) |
| Color | 图表背景色 |
LineSeries Properties
LineSeries 属性
| Property | Type | Description |
|---|---|---|
| object | Data collection to bind |
| string | Property for resistance/conductance values |
| string | Property for reactance/susceptance values |
| Color | Line color |
| int | Line thickness |
| DashStyle | Line pattern (Solid, Dash, Dot, etc.) |
| bool | Show/hide data markers |
| MarkerType | Marker shape |
| bool | Enable tooltips |
| string | Text shown in legend |
| bool | Show/hide series |
| bool | Plot by index vs sorted by resistance |
| 属性 | 类型 | 说明 |
|---|---|---|
| object | 要绑定的数据集合 |
| string | 电阻/电导值对应的属性名 |
| string | 电抗/电纳值对应的属性名 |
| Color | 线条颜色 |
| int | 线条粗细 |
| DashStyle | 线条样式(实线、虚线、点线等) |
| bool | 显示/隐藏数据标记 |
| MarkerType | 标记形状 |
| bool | 启用工具提示 |
| string | 图例中显示的文本 |
| bool | 显示/隐藏系列 |
| bool | 按索引绘制还是按电阻排序绘制 |
ChartAxis Properties
ChartAxis 属性
| Property | Type | Description |
|---|---|---|
| bool | Show/hide major gridlines |
| bool | Show/hide minor gridlines |
| int | Number of minor gridlines between major |
| LabelPlacement | Inside or Outside chart area |
| LabelIntersectActions | Handle overlapping labels (Hide) |
| bool | Show/hide axis line |
| 属性 | 类型 | 说明 |
|---|---|---|
| bool | 显示/隐藏主网格线 |
| bool | 显示/隐藏次网格线 |
| int | 主网格线之间的次网格线数量 |
| LabelPlacement | 标签在图表区域内侧还是外侧 |
| LabelIntersectActions | 重叠标签处理策略(隐藏) |
| bool | 显示/隐藏轴线 |
Common Use Cases
常见使用场景
High-Frequency Circuit Analysis
高频电路分析
Use impedance mode to analyze RF circuit behavior:
- Plot measured S-parameters
- Visualize matching network performance
- Analyze antenna impedance characteristics
使用阻抗模式分析RF电路行为:
- 绘制测量得到的S参数
- 可视化匹配网络性能
- 分析天线阻抗特性
Transmission Line Visualization
传输线可视化
Display transmission line parameters:
- Show normalized impedance along a transmission line
- Plot reflection coefficients
- Visualize VSWR circles
展示传输线参数:
- 显示传输线沿线的归一化阻抗
- 绘制反射系数
- 可视化驻波比圆
Multiple Trace Comparison
多迹线对比
Compare different circuit configurations:
- Add multiple series with different LegendText
- Use different colors for each series
- Enable legend with ToggleSeriesVisible for interactive comparison
对比不同电路配置:
- 添加多个带有不同LegendText的系列
- 为每个系列设置不同颜色
- 启用带ToggleSeriesVisible功能的图例实现交互式对比
Interactive Data Exploration
交互式数据探索
Provide users with exploration tools:
- Enable tooltips with custom formatting
- Use TooltipOpening event for dynamic content
- Add data labels for key points
- Allow legend-based series toggling
为用户提供探索工具:
- 启用带自定义格式的工具提示
- 使用TooltipOpening事件实现动态内容
- 为关键点位添加数据标签
- 支持基于图例的系列切换
Custom Marker Visualization
自定义标记可视化
Highlight specific data points:
- Use different marker types per series
- Add image markers for special points
- Customize marker sizes and colors
高亮特定数据点:
- 每个系列使用不同的标记类型
- 为特殊点位添加图片标记
- 自定义标记尺寸和颜色
Troubleshooting
故障排查
Data Not Appearing
数据不显示
- Ensure is set and contains valid data
DataSource - Verify and
ResistanceMembermatch property names exactly (case-sensitive)ReactanceMember - Check that data values are within valid ranges
- Confirm series is added to collection
sfSmithChart.Series
- 确认已设置且包含有效数据
DataSource - 验证和
ResistanceMember与属性名完全匹配(区分大小写)ReactanceMember - 检查数据值在有效范围内
- 确认系列已添加到集合中
sfSmithChart.Series
Performance Issues with Large Datasets
大数据集性能问题
- Wrap point additions in /
BeginUpdate()blocksEndUpdate() - Disable markers if not needed ()
MarkerVisible = false - Consider data sampling for extremely large datasets
- 将数据点添加操作包裹在/
BeginUpdate()块中EndUpdate() - 不需要标记时关闭标记()
MarkerVisible = false - 超大数据集建议采用数据采样
Labels Overlapping
标签重叠
- Use to auto-hide overlapping labels
LabelIntersectAction = LabelIntersectActions.Hide - Adjust chart size or use for more space
LabelPlacement.Inside - Smart alignment automatically handles data label collisions
- 使用自动隐藏重叠标签
LabelIntersectAction = LabelIntersectActions.Hide - 调整图表尺寸或使用获得更多空间
LabelPlacement.Inside - 智能对齐会自动处理数据标签重叠问题
Legend Not Showing
图例不显示
- Set
chart.Legend.Visible = true - Ensure each series has property set
LegendText - Check that chart has enough space for legend based on
DockPosition
- 设置
chart.Legend.Visible = true - 确认每个系列都设置了属性
LegendText - 根据检查图表是否有足够空间展示图例
DockPosition