286
LightningChart®Ultimate SDK 用户手册

LightningChart®Ultimate SDK 用户手册 · 2020-01-22 · 5.21.17 在缩放与筛选操作中排除特定的X轴或Y 轴 ..... 124 5.22 NaN或其他值的DataBreaking..... 124

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

LightningChart®Ultimate SDK

用户手册

简介

本文档是一个简短的 LightningChart 终极软件开发套件的用户手册和参考指南。本文仅仅解释了其中重要的关键特征,

并没有对数百种分类,属性或方法进行描述。运行演示应用程序,可以快速预览一些 LightningChart 功能。 有关代码

示例,请查看包含源代码的演示应用程序。

本文档中的所有代码示例都以 C#语言编写。大部分演示应用程序也提供 C#和 Visual Basic .NET 的代码预览。

请记得,如果您有任何问题,请随时联系 support([email protected])!

适用于 LightningChart 终极版,v.8.0.2

Copyright Arction Ltd 2009-2017

版权所有。

Arction Ltd 已为 LightningChart 的注册商标。

www.arction.com

www.lightningchart.com

Contents 1. 概述 ....................................................................................................................................................................... 15

1.1 图表版本 .............................................................................................................................................................. 15

1.2 组件 ..................................................................................................................................................................... 16

1.3 命名空间 .............................................................................................................................................................. 17

2 安装 ........................................................................................................................................................................... 18

2.1 安装前 ................................................................................................................................................................. 18

2.2 运行安装向导 ..................................................................................................................................................... 18

2.3 手动将 Arction 组件添加至 Visual Studio Toolbox 中................................................................................ 18

2.4 手动配置 Visual Studio 2010-2017 帮助 ....................................................................................................... 19

2.4.1 Visual Studio 2010 ................................................................................................................................... 19

2.4.2 Visual Studio 2012-2017 ........................................................................................................................ 19

2.5 Visual Studio IntelliSense 的代码参数和提示 .............................................................................................. 20

2.6 选择目标框架 ..................................................................................................................................................... 21

2.7 更新旧版本 ......................................................................................................................................................... 22

3. 许可证管理 ............................................................................................................................................................ 23

3.1 添加许可证 .......................................................................................................................................................... 23

3.2 删除许可证 ......................................................................................................................................................... 25

3.3 提取部署密钥 ..................................................................................................................................................... 25

3.4 在应用程序中应用部署密钥............................................................................................................................... 25

3.5 运行调试器 ........................................................................................................................................................ 27

3.6 试用期 ................................................................................................................................................................. 27

3.7 浮动许可证(Floating licenses) ................................................................................................................... 27

4. LightningChartUltimate 组件 .............................................................................................................................. 28

4.1 从工具箱中添加至 Windows Forms 项目中 ................................................................................................... 28

4.1.1 属性.............................................................................................................................................................. 28

4.1.2 事件处理器 .................................................................................................................................................. 28

4.1.3 最优方法以及版本更新 ............................................................................................................................... 29

4.2 从工具箱中向 WPF 程序中添加 ........................................................................................................................ 29

4.2.1 属性 .............................................................................................................................................................. 29

4.2.2 事件处理器 .................................................................................................................................................. 29

4.3 添加至 Blend WPF 程序 ................................................................................................................................... 30

4.3.1 最优方法、版本更新 ................................................................................................................................... 31

4.3.2 防止图表模糊 .............................................................................................................................................. 31

4.4 在 WPF 应用程序中使用 Windows 窗体图表 ................................................................................................ 32

4.5 对象模型 ............................................................................................................................................................ 34

4.5.1 Windows Forms 与 WPF 之间的区别 ......................................................................................................... 35

4.6 外观配置/性能设置 ........................................................................................................................................... 36

5. ViewXY .................................................................................................................................................................... 38

5.1 轴布局选项 .......................................................................................................................................................... 40

5.1.1 自动边距 ....................................................................................................................................................... 41

5.1.2 设置轴的放置方式 ....................................................................................................................................... 41

5.1.3 将图形段和 Y 轴放置在其中 ....................................................................................................................... 46

5.1.4 轴网格带 ...................................................................................................................................................... 48

5.1.5 其它轴布局选项 ........................................................................................................................................... 50

5.2 Y 轴 ..................................................................................................................................................................... 50

5.2.1Y 轴分类属性 ................................................................................................................................................ 50

5.2.2 点值标签格式化 .......................................................................................................................................... 51

5.2.3 值类型 ........................................................................................................................................................ 51

5.2.4 范围调定 .................................................................................................................................................... 52

5.2.5 恢复范围 ..................................................................................................................................................... 53

5.2.6 分割 ............................................................................................................................................................ 53

5.2.7 网格 ............................................................................................................................................................ 54

5.2.8 自定义刻度 ................................................................................................................................................. 54

5.2.9 反转 X 轴和 Y 轴 ......................................................................................................................................... 55

5.2.10 对数数轴 .................................................................................................................................................... 55

5.2.11 在数轴值和屏幕坐标之间进行转换 .......................................................................................................... 57

5.2.12 MiniScale ................................................................................................................................................. 57

5.3 X 轴 ..................................................................................................................................................................... 57

5.3.1 实时监控滚动 ............................................................................................................................................... 58

5.3.2 刻度断点...................................................................................................................................................... 62

5.4 浏览 XY 序列,综述 ........................................................................................................................................... 64

5.5 点线序列 ............................................................................................................................................................. 64

5.5.1 线条样式 ...................................................................................................................................................... 65

5.5.2 点样式 ......................................................................................................................................................... 66

5.5.3 单独给点上色 .............................................................................................................................................. 66

5.5.4 添加点数 .................................................................................................................................................... 67

5.5.5 添加点,可供选择的方式 .......................................................................................................................... 67

5.6 样本数据系列 .................................................................................................................................................... 68

5.6.1 Y 精度 ........................................................................................................................................................ 69

5.6.2 增加点数 ..................................................................................................................................................... 69

5.7 自由点线系列..................................................................................................................................................... 70

5.8 线系列高级线着色 .............................................................................................................................................. 71

5.8.1 基于 Y 值的线条着色和用量程调色板填充 ................................................................................................ 72

5.8.2 使用 CustomLinePointColoringAndShaping 事件定制成型和着色 ................................................ 73

5.9 高低系列 ............................................................................................................................................................. 73

5.9.1 填充,线和点样式 ....................................................................................................................................... 74

5.9.2 限制 ............................................................................................................................................................. 75

5.9.3 通过值范围调色板进行着色 ....................................................................................................................... 76

5.9.4 添加数据 ..................................................................................................................................................... 76

5.10 区系列 ............................................................................................................................................................... 77

5.10.1 添加数据 ..................................................................................................................................................... 78

5.11 条形图 ................................................................................................................................................................ 79

5.12 股票序列 ........................................................................................................................................................... 81

5.12.1 给 StockSeries 数据设置 .......................................................................................................................... 83

5.12.2 给日期显示设置 X 轴 ................................................................................................................................ 84

5.12.3 自定义外观格式化 ..................................................................................................................................... 84

5.12.4 应用尺度中断 ............................................................................................................................................ 85

5.13 PolygonSeries ................................................................................................................................................ 85

5.13.1 给多边形设置数据 .................................................................................................................................... 86

5.13.2 激活复杂/相交的填充物 .......................................................................................................................... 86

5.14 LineCollection ................................................................................................................................................ 87

5.14.1 在 LineCollection 中设置数据................................................................................................................ 88

5.15 IntensityGridSeries ....................................................................................................................................... 88

5.15.1 设置强度网格数据 ..................................................................................................................................... 91

5.15.2 从位图文件创建强度网格数据 .................................................................................................................. 94

5.15.3 填充样式 .................................................................................................................................................... 94

5.15.4 作为像素图渲染 ........................................................................................................................................ 95

5.15.5 ValueRangePalette ............................................................................................................................... 96

5.15.6 线框 ........................................................................................................................................................... 98

5.15.7 等高线 ........................................................................................................................................................ 99

5.15.8 轮廓线标签 .............................................................................................................................................. 100

5.16 IntensityMeshSeries .................................................................................................................................... 101

5.16.1 几何变化时,设置强度网格数据 ............................................................................................................. 102

5.16.2 几何不改变时,设置网格数据强度 ........................................................................................................ 103

5.17 带 ..................................................................................................................................................................... 105

5.18 恒定线 ............................................................................................................................................................. 106

5.19.1 控制目标和位置 ....................................................................................................................................... 108

6.19.2 使用鼠标移动,旋转和调整大小 ............................................................................................................ 109

5.19.3 调整外观 .................................................................................................................................................. 109

5.19.4 尺寸设置 ................................................................................................................................................... 110

5.19.5 保持文本区域可见 ................................................................................................................................... 110

5.19.6 在轴上显示注释 ....................................................................................................................................... 110

5.19.7 在图表中进行剪裁 .................................................................................................................................... 111

5.19.8 控制 Z 顺序............................................................................................................................................. 111

5.19.9 LayerGrouping 功能优化...................................................................................................................... 112

5.19.10 在轴值与屏幕坐标间进行转换 ............................................................................................................... 112

5.20 示例对话框 .................................................................................................................................................. 112

5.20.1 在示例对话框中隐藏/显示某个序列 ...................................................................................................... 113

5.20.2 防止序列在示例对话框中自行列出 ........................................................................................................ 113

5.20.3 在示例对话框中选择要显示的特定序列 ................................................................................................. 114

5.20.4 隐藏复选框 .............................................................................................................................................. 114

5.20.5 隐藏图标 .................................................................................................................................................. 114

5.20.6 控制位置 ................................................................................................................................................. 114

5.20.7 在行段间为示例对话框配置空格 ............................................................................................................ 114

5.20.8 在段落对话框中将示例对话框对齐 ........................................................................................................ 115

5.20.9 在图表段落中选择显示示例文本框的位置 ............................................................................................. 116

5.20.10 改变示例对话框的的尺寸、移动示例对话框 ....................................................................................... 116

5.21 缩放与平移 ....................................................................................................................................................... 117

5.21.1 使用触屏进行缩放 ................................................................................................................................... 117

5.21.2 使用触屏进行筛选 .................................................................................................................................... 118

5.21.3 鼠标左键动作 ........................................................................................................................................... 118

5.21.4 鼠标右键动作 ........................................................................................................................................... 118

5.21.5 RightToLeftZoomAction ..................................................................................................................... 118

5.21.6 使用鼠标按钮进行缩放 ............................................................................................................................ 119

5.21.7 使用鼠标滚轮进行缩放 ........................................................................................................................... 120

5.21.8 在轴上使用鼠标进行缩放与筛选 ........................................................................................................... 120

5.21.9 使用鼠标按钮进行筛选 ........................................................................................................................... 121

5.21.10 启用/禁用 Ctrl、Shift、Alt .................................................................................................................. 121

5.21.11 使用代码进行放大/缩小 ......................................................................................................................... 121

5.21.12 使用代码对轴进行缩放......................................................................................................................... 122

5.21.13 可配置原点的矩形缩放......................................................................................................................... 122

5.21.14 使用相同的单位连接 Y 轴缩放 ............................................................................................................ 122

5.21.15 自动 Y fit ............................................................................................................................................... 123

5.21.16 纵横比 ................................................................................................................................................... 123

5.21.17 在缩放与筛选操作中排除特定的 X 轴或 Y 轴 ..................................................................................... 124

5.22 NaN 或其他值的 DataBreaking ................................................................................................................. 124

5.23 ClipAreas ...................................................................................................................................................... 127

5.24 地图 ............................................................................................................................................................... 128

5.25 矢量地图 .................................................................................................................................................... 128

5.25.1 选择动态地图 .......................................................................................................................................... 129

5.25.2 长宽比 ..................................................................................................................................................... 130

5.25.3 图层及其外观设置 .................................................................................................................................. 130

5.25.4 鼠标交互 ................................................................................................................................................. 133

5.25.5 背景照片 ................................................................................................................................................. 134

5.25.6 将其他系列与地图结合 .......................................................................................................................... 135

5.25.7 从 ESRI 形状文件数据导入地图 ............................................................................................................. 136

5.25.8 导入和替换地图图层 .............................................................................................................................. 144

5.26 Tile Maps 并列式窗口图像 ......................................................................................................................... 145

5.26.1 Here ........................................................................................................................................................ 147

5.27 线系列光标 .................................................................................................................................................... 149

5.27.1 解决 Line Series Cursor 位置下的数据值 ............................................................................................ 151

5.28 事件标注功能 ................................................................................................................................................ 153

5.28.1 图表事件标注功能 ................................................................................................................................ 154

5.28.2 线性系列事件标注功能 ......................................................................................................................... 154

5.29 持续的序列渲染层 ........................................................................................................................................ 155

5.29.1 创建图层 ................................................................................................................................................. 157

5.29.2 清空图层 ................................................................................................................................................ 157

5.29.3 调整图层字母符号 ................................................................................................................................. 158

5.29.4 在图层中渲染数据 ................................................................................................................................. 158

5.29.5 处理图层 ................................................................................................................................................. 159

5.29.6 图层中的反图形失真数据 ...................................................................................................................... 159

5.29.7 获取图层菜单 ......................................................................................................................................... 160

5.29.8 您应该注意到的一些图层限制 .............................................................................................................. 160

5.30 持续的渲染强度层系列 .................................................................................................................................. 160

5.30.1 创建一个图层 .......................................................................................................................................... 161

5.30.2 清除选定图层 ......................................................................................................................................... 162

5.30.3 改变调色盘的颜色 ................................................................................................................................. 162

5.30.4 调整新描绘的强度效应和老描绘的减退状态 ..................................................................................... 162

5.30.5 将数据渲染至图层中 ............................................................................................................................. 163

5.30.6 处理图层操作 .......................................................................................................................................... 163

5.30.7 图层中的防止图形失真数据 ................................................................................................................... 164

5.30.8 获取图层列表 .......................................................................................................................................... 164

6. View3D .................................................................................................................................................................. 164

6.1 3D 模型和尺寸 ................................................................................................................................................. 165

6.1.1 世界坐标 ..................................................................................................................................................... 166

6.2 墙面 ................................................................................................................................................................... 167

6.3 框盒 ................................................................................................................................................................... 167

6.4 相机................................................................................................................................................................... 168

6.4.1 预定义相机 ................................................................................................................................................ 169

6.5 光 ...................................................................................................................................................................... 170

6.5.1 平行光 ........................................................................................................................................................ 170

6.5.2 光点 ........................................................................................................................................................... 170

6.5.3 光线与材料 ................................................................................................................................................. 171

6.5.4 预定义照明方案 ......................................................................................................................................... 171

6.6 轴 ...................................................................................................................................................................... 172

6.6.1 位置 ............................................................................................................................................................ 172

6.6.2 方向 ........................................................................................................................................................... 174

6.6.3 角点对齐.................................................................................................................................................... 175

6.7 3D 序列,综述 .............................................................................................................................................. 175

6.8 PointLineSeries3D ........................................................................................................................................ 176

6.8.1 点样式 ........................................................................................................................................................ 176

6.8.3 添加点数.................................................................................................................................................... 178

6.8.4 单独对点进行着色 .................................................................................................................................... 180

6.8.5 单独设置点的尺寸 ..................................................................................................................................... 181

6.8.6 多色线 ....................................................................................................................................................... 182

6.8.7 显示百万散点 ............................................................................................................................................ 182

6.9 SurfaceGridSeries3D ................................................................................................................................... 183

6.9.1 设置表面网格数据 ..................................................................................................................................... 185

6.9.3 填充样式.................................................................................................................................................... 187

6.9.4 轮廓调色板 ............................................................................................................................................... 188

6.9.5 线框网格.................................................................................................................................................... 189

6.9.6 轮廓线 ....................................................................................................................................................... 192

6.9.7 滚动曲面数据 ........................................................................................................................................... 194

6.10 SurfaceMeshSeries3D ................................................................................................................................ 195

6.10.1 表面网格数据设置 ................................................................................................................................... 196

6.10.2 在 3D 中可视化点云 ............................................................................................................................... 197

6.11 WaterfallSeries3D ........................................................................................................................................ 198

6.12 BarSeries3D .................................................................................................................................................. 199

6.12.1 条形分组 .................................................................................................................................................. 199

6.12.2 条形样式 ................................................................................................................................................. 202

6.12.3 设置条状系列数据 .................................................................................................................................. 203

6.12.4 水平显示条状 ......................................................................................................................................... 204

6.13 网格模型 ........................................................................................................................................................ 206

6.13.1 加载模型 .................................................................................................................................................. 207

6.13.2 定位,缩放和旋转模型 .......................................................................................................................... 208

6.13.3 启用填充和线框 ..................................................................................................................................... 208

6.13.4 定制着色填充 ......................................................................................................................................... 208

6.13.5 定制着色线框 ......................................................................................................................................... 209

6.13.6 反向顶点卷绕顺序 ................................................................................................................................... 210

6.14 Volume Models 体积模型 ......................................................................................................................... 210

6.14.1 加载数据.................................................................................................................................................... 211

6.14.2 属性 ......................................................................................................................................................... 212

6.14.3 光线功能 .................................................................................................................................................. 213

6.1.4 阈值 ............................................................................................................................................................ 216

6.14.5 切片范围 .................................................................................................................................................. 217

6.14.6 抽样率选项 .............................................................................................................................................. 218

6.14.7 平滑度 ...................................................................................................................................................... 219

6.14.8 EmptySpaceSkipping(越过空白区功能) ...................................................................................... 220

6.14.9 不透明度 ................................................................................................................................................. 222

6.14.10 亮度和暗度 ........................................................................................................................................... 222

6.15 Rectangle3D 对象 ....................................................................................................................................... 222

6.16 Polygon3D 对象 .......................................................................................................................................... 224

6.17 缩放,平移和旋转 ......................................................................................................................................... 226

6.17.1 鼠标滚轮缩放 .......................................................................................................................................... 227

6.17.2 框缩放 ..................................................................................................................................................... 227

6.17.3 旋转和平移 ............................................................................................................................................. 228

6.17.4 使用触摸屏进行缩放 .............................................................................................................................. 228

6.17.5 用触摸屏进行平移 .................................................................................................................................. 228

6.17.6 在轴上使用鼠标滚轮 .............................................................................................................................. 229

6.17.7 通过代码进行缩放,旋转和平移 ........................................................................................................... 229

6.18 剪切轴范围内的物体 ..................................................................................................................................... 229

6.19 注释 ................................................................................................................................................................ 230

7. ViewPie3D ........................................................................................................................................................... 230

7.1 属性 ................................................................................................................................................................... 231

7.2 切片 .................................................................................................................................................................. 232

7.3 按代码设置数据 ............................................................................................................................................... 232

7.4 在 2D 中查看饼图 ........................................................................................................................................... 233

8. ViewPolar ............................................................................................................................................................. 234

8.1 轴 ...................................................................................................................................................................... 234

8.2 PointLineSeries ............................................................................................................................................ 235

8.2.1 设置数据 ................................................................................................................................................... 236

8.2.2 调色板着色 ............................................................................................................................................... 237

8.3 区域系列 .......................................................................................................................................................... 237

8.3.1 设置数据 ................................................................................................................................................... 238

8.4 扇区.................................................................................................................................................................. 238

8.5 注释 .................................................................................................................................................................. 239

8.6 标记 .................................................................................................................................................................. 239

8.7 缩放和平移 ...................................................................................................................................................... 240

9. 查看史密斯图表 ..................................................................................................................................................... 241

9.1 轴 ...................................................................................................................................................................... 242

9.3 设置数据 .......................................................................................................................................................... 245

9.4 注释.................................................................................................................................................................. 246

9.5 标记 .................................................................................................................................................................. 246

10. 设置色彩主题 ...................................................................................................................................................... 247

11.滚动条 .................................................................................................................................................................... 248

12.出口和印刷 ............................................................................................................................................................ 249

12.1 位图图像导出 ................................................................................................................................................. 249

12.2 矢量图像导出 ................................................................................................................................................. 249

12..3 复制到剪贴板 ................................................................................................................................................ 249

12.4 打印 ................................................................................................................................................................ 250

13.LightningChart 性能 .......................................................................................................................................... 250

13.1 选择正确的 API 版本 ..................................................................................................................................... 250

13.2 正确设置渲染选项 ......................................................................................................................................... 250

13.3 更新图表数据或属性 ...................................................................................................................................... 251

13.4 线系提示 ........................................................................................................................................................ 252

13.5 强度序列提示 ................................................................................................................................................. 252

13.6 3D 曲面序列提示 ........................................................................................................................................ 253

13.7 地图提示 ........................................................................................................................................................ 253

13.8 硬件 ................................................................................................................................................................ 254

14. LightningChart 错误与异常处理 ...................................................................................................................... 254

15. ChartManager 组件 .......................................................................................................................................... 254

15.1 图表互操作,拖放 .......................................................................................................................................... 255

15.2 内存管理增强 ................................................................................................................................................. 255

16. SignalGenerator 组件 ....................................................................................................................................... 256

16.1 采样频率、输出间隔、系数 ........................................................................................................................... 256

16.2 正弦波形 ........................................................................................................................................................ 257

16.3 方波 ................................................................................................................................................................ 258

16.4 三角波形 ........................................................................................................................................................ 259

16.5 噪声波形 ........................................................................................................................................................ 259

16.6 频率扫描 ........................................................................................................................................................ 260

16.7 振幅扫描 ........................................................................................................................................................ 260

16.8 开始与停止 ...................................................................................................................................................... 261

16.9 具有主从配置的多通道发生器 ....................................................................................................................... 261

16.10 输出数据流 .................................................................................................................................................... 261

17. SignalReader 组件 ............................................................................................................................................ 262

17.1 主要特性 ........................................................................................................................................................ 263

17.2 快速打开文件进行重放 .................................................................................................................................. 263

18. AudioInput 组件 ............................................................................................................................................... 264

18.1 性能 ................................................................................................................................................................ 264

18.2 方法 ............................................................................................................................................................... 265

18.3 事件 ............................................................................................................................................................... 265

18.4 用法 (WinForms) ....................................................................................................................................... 266

18.4.1 创建 ........................................................................................................................................................ 266

18.4.2 事件处理 ................................................................................................................................................ 266

18.4.3 配置 ....................................................................................................................................................... 267

18.4.4 启动 ....................................................................................................................................................... 267

18.4.5 停止 ....................................................................................................................................................... 268

18.5 用法 (WPF) .................................................................................................................................................. 268

18.5.1 创建 ........................................................................................................................................................ 268

19. AudioOutput 组件 ........................................................................................................................................... 269

19.1 属性 ................................................................................................................................................................. 269

20. 频谱计算器组件 .................................................................................................................................................. 270

22. 处理模式 ............................................................................................................................................................. 279

22.1 以代码形式创建的图表 ................................................................................................................................. 279

22.1.1 图表处理方法 .......................................................................................................................................... 279

22.1.2 对象处理方法 ............................................................................................................................................. 279

23. 对象模型说明 ...................................................................................................................................................... 280

23.1 在其他对象之间共享对象 .............................................................................................................................. 280

24.部署 ........................................................................................................................................................................ 281

24.1 参考的程序集 .................................................................................................................................................. 281

24.2 许可证密钥 .................................................................................................................................................... 283

25.故障排除 ............................................................................................................................................................... 283

25.1 Web 支持 ...................................................................................................................................................... 283

25.2 在虚拟机平台上的运行 ................................................................................................................................. 284

25.3 信用证 .......................................................................................................................................................... 284

26.3.1 Intel Math Kernel 素材库 ................................................................................................................... 284

25.3.2 开源项目 ................................................................................................................................................ 284

1. 概述

LightningChart Ultimate 软件开发工具包是 Microsoft Visual Studio 的一个插件,包括用于 WPF(Windows

Presentation Foundation)和 Windows Forms .NET 平台的数据可视化相关软件组件和工具类。

Arction 公司的组件专为具有严谨的科学,工程,测量和交易提供解决方案,特别专注于产品的执行性能和非常先进的

功能。

LightningChart 组件使用低级 DirectX9 和 DirectX11 GPU 加速,而不是较慢的 GDI / GDI +或 WPF Graphics API。

当 GPU 无法访问或没有显卡的情况下,LightningChart WARP 自动渲染软件,例如在某些虚拟机中。

1.1 图表版本

在 WPF 中,LightningChart 组件可用于不同的绑定级别版本,以在不同性能和 MVVM(模型 - 视图 - 视图模型)可

绑定性需求之间进行平衡。

图表版本 属性绑定 系列数据绑定 性能

WPF(非绑定) 否 否 超级棒

WPF(半绑定) 是 否 非常好

WPF(全绑定) 是 是 很好

WinForms 否 否 最好

表 1-1.可绑定性和性能矩阵。

•为获得 WPF 和多线程优势的最佳性能,请选择非绑定图表。

•对于 WPF 可绑定性和性能之间进行折衷,请选择半绑定图表。

•对于完整的 WPF MVVM 设计模式支持,请选择全绑定图表。

半绑定图表 API 与 LightningChart v.6 的 WPF 图表非常相似,但包含扩展属性绑定,也覆盖了在集合中创建的对象。

不同的图表版本可以在同一个应用程序中使用。因此,可以使用全绑定的图表制作基本图表,并绑定数据。对于关键性

任务,使用非绑定的图表。

默认情况下,半绑定和 WPF 全绑定图表集合属性(如 ViewXY 轴,3D 灯)为空,它将全面支持 XAML 编辑器。在非

绑定和 WinForms 集合中预填充默认项。

注意!非绑定 WPF 图表根本不用于在 XAML 中进行配置,而是在代码隐藏中使用它。

1.2 组件

图 1-1. 左侧是 WPF 工具箱组件。右侧是 WinForms 工具箱组件

图表组合

LightningChartUltimate 图表组件, 在各种演示文稿中可视化数据。

在图标的顶角, SB = Semi-bindable WPF chart 和 B = Bindable WPF chart

ChartManager 控制多个图表组件的互操作和实时测量内存管理。 见第 15 章。

SignalTools 组合

没有 UI 的组件的用 X 标记。

AudioInput 从声音设备中读取波形音频流。 线路输入或麦克风输入连接器是声音设备中可用的典型选项。

实时流可以转发到其他控件。 见第 18 章。

AudioOutput 通过声音设备来播放实时数据流, 如: 扬声器或线路输出。它不一定是音频流,可以使用任何

采样的实时信号。 见第 19 章。

SignalGenerator 从多个可配置波形组件中获取信号。 见第 16 章。

SignalReader 从信号文件中读取波形数据,如 PCM 格式的 WAV 文件。 见第 17 章。

SpectrumCalculator 通过使用 FFT(快速傅立叶变换)将信号数据(时域)转换为频谱(频域)。 还包含频

域到时域的逆向转换方法。 见第 20 章。

1.3 命名空间

图表版本 组合名称 命名空间根目录 XML 命名空间

WPF (非绑定) Arction.Wpf.Charting.

LightningChartUltimate.dll

Arction.Wpf.

Charting

xmlns:lcunb=

"http://schemas.arction.com/

charting/ultimate/"

WPF (半绑定) Arction.

Wpf.SemibindableCharting.

LightningChartUltimate.dll

Arction.Wpf.

SemibindableChart

ing

xmlns:lcusb=

"http://schemas.arction.com/

semibindablecharting/ultimate/"

WPF (全绑定) Arction. Wpf.BindableCharting.

LightningChartUltimate.dll

Arction.Wpf.

BindableCharting

xmlns:lcufb=

"http://schemas.arction.com/

bindablecharting/ultimate/"

WinForms Arction. WinForms.Charting.

LightningChartUltimate.dll

Arction.WinForms.

Charting

N/A

表 1-2. 所有 LightningChart Ultimate 版本的装配名称和命名空间。

2 安装

2.1 安装前

检查您的计算机配置是否符合要求

• DirectX 9.0c(着色器模型 3)级别图形适配器或更新版本,或 DirectX11 兼容操作系统,用于没有图形硬件时进行渲

染。 推荐使用 DirectX11 兼容的图形硬件。

• Windows Vista,7,8 或 10,32 位或 64 位,Windows Server 2008 R2 或更高版本

• Visual Studio 2010-2017 进行开发,不含部署要求

•.NET Framework 4.0 版本或更新的安装

2.2 运行安装向导

右键单击 setup.exe。 安装程序会将组件安装到 Visual Studio 工具箱中。 此外,它还会安装与工具箱控件相关联的帮

助文件。 如果组件或帮助安装失败,请按照以下部分的说明手动安装。

2.3 手动将 Arction 组件添加至 Visual Studio Toolbox 中

WinForms

1.启动 Visual studio,创建一个新的 WinForms 项目,右击工具箱,选择 Add Tab,并命名为“Arction”。

2.右击 Arction 标签,选择 Choose Items…

3.在 Choose Toolbox items 窗口中,选中.NET 框架组件页面,点击 Browse…

在安装组件的文件夹中,通常在 c:\program files (x86)\Arction\LightningChart Ultimate SDK v.7\LibNet4,浏览

Arction.WinForms.Charting.LightningChartUltimate.dll

和 Arction.WinForms.SignalProcessing.SignalTools.dll,单击打开。

现在可在工具箱中找到组件。

WPF

1.打开 Visual Studio,创建一个新的 WPF 程序,右击工具箱,选择 Add Tab 并命名为“Arction”

2.右击 Arction 标签,选择 Choose Items…

3.在 Choose Toolbox items 窗口中,选中.NET Framework components 页面,点击 Browse…

在安装的文件夹中, 通常在 c:\program files (x86)\Arction\LightningChart Ultimate SDK v.7\LibNet4 中, 浏览

Arction.Wpf.Charting.LightningChartUltimate.dll、

Arction.Wpf.SemibindableCharting.LightningChartUltimate.dll、

Arction.Wpf.BindableCharting.LightningChartUltimate.dll 和

Arction.Wpf.SignalProcessing.SignalTools.dll 组件, 单击打开。

现在可在工具箱中找到组件。

2.4 手动配置 Visual Studio 2010-2017 帮助

本章将针对如何手动安装 LightningChart Ultimate 帮助内容,为您提供信息。

若 Visual Studio 2010-2017 没有安装过任何本地帮助方面的内容,您会需要用到这个信息。

当您安装 LightningChart Ultimate 且没有安装任何本地帮助内容时,LightningChart Ultimate 的帮助也不会进行安装。

在这些步骤之后,您便可以从 Visual Studio 2010-2017 中浏览 LightningChart Ultimate 帮助。

您可以在 LightningChart Ultimate 的类型,属性等任意一个上按 F1,也可以使用 Microsoft 帮助查看器浏览帮助内容。

2.4.1 Visual Studio 2010

遵循以下步骤可在 Visual Studio 2010 上手动安装 LightningChart Ultimate 帮助内容:

1.启动 Visual Studio 2010

2.选择“Help -> Manage Help Settings”

3.在 Help Library Manager,单击 Settings 链接

4.确认“I want to use local help”为选中状态

5.在“I want to use local help”为选中的状态下,单击 Cancel 返回 Help Library Manager.

否则,单击 OK

6.点击 Install content from disk 链接

7. 点 击 Browse 按 钮 , 通 过 默 认 路 径 C:\Program Files (x86)\Arction\LightningChartUltimate SDK

v.8\MSHelpViewer 找到安装 LightningChart Ultimate 的文件夹

8.选中 HelpContentSetup.msha,点击 Open 选项。

9.点击 Next 选项。

10.在 LightningChart Ultimate Help 旁边有 Add 链接,然后单击,确保 Status 列值为 Update Pending

11.点击 Update 按钮。如果 Help Library Manager 询问是否继续,点击 Yes 按钮。帮助图库更新会启动。

12. 帮助图库更新完毕后,点击 Finish 按钮,关闭 Help Library Manager。

2.4.2 Visual Studio 2012-2017

按照以下步骤在 Visual Studio 2012-2017 上手动安装 LightningChart Ultimate 帮助内容:

1.打开 Visual Studio 2012,2013,2015 或 2017。

2.选择 HELP - >Add and Remove Help Content。

3.启动 Microsoft 帮助查看器后,选择 Manage Content。

4.选择 Installation sourse 下的 Disk。

5.点击三点按钮浏览文件。

6.通过默认路径 C:\ Program Files(x86)\ Arction \ LightningChartUltimate SDK v.8 \ MSHelpViewer,进入安

装 LightningChart Ultimate 的文件夹

7.选择 HelpContentSetup.msha,然后单击 Open 按钮。

8.在 LightningChart Ultimate Help 旁边有 Add 链接。单击它,并确保 Status 列值更改为 Add pending.

9.单击 Update 按钮。如果 Help Library Manager 询问您是否要继续,请单击 Yes 按钮。帮助库更新开始。

10.更新帮助库后,可以关闭 Microsoft 帮助查看器。

11.在 Visual Studio 菜单/帮助中,选择设置 Help Preference:Launch in Help Viewer

图 2-1.设置 help preference

2.5 Visual Studio IntelliSense 的代码参数和提示

如果 LightningChartUltimate.dll 文件从全局程序集缓存中引用并且控件未由自动工具箱安装程序安装,IntelliSense 可

能不会在键入 LightningChart 相关代码时显示代码提示。从项目的引用列表中删除 LightningChartUltimate.dll 文件,

然后再重新通过直接链接安装(通常是 c:\ program files(x86)\ Arction \ LightningChart Ultimate SDK v.8 \

LibNet4)。

2.6 选择目标框架

在 C#项目中,框架选择可以在 Project - > Properties - > Application - > Target 框架中进行。

图 2-2.在 C#项目中选择目标框架。

在 Visual Basic 项目中,可以在 Project - > Options - > Compile - > Advanced compile options- > Target 框架中进

行。

图 2-3.在 Visual Basic 项目中选择目标框架。

• 选择.NET Framework 4、.NET Framework 4 Client Profile 或 .NET Framework 4.5, or 4.6).

只有选择了正确的.NET 框架,LightningChart Ultimate SDK 控件才会显示在 Visual Studio 工具箱中。

2.7 更新旧版本

LightningChart 新版本的 API 可能与您使用的旧版本不完全一致,新版本也不会自动更新到您的项目中。本章节将教您

如何将新版本程序集作为编号增添至您的项目中,并修复不能够用 Visual Studio 格式编辑器反序列化的有关内容。

想要更新图表,您首先需要删除旧版本的编号,增添新编号至新版本中。某些情况下,您可能需要修复含有无法进行二

进制兼容的*.Designer.cs 和 *.resx 文件。

如何从项目编号中删除旧编号

1. 打开 Solution Explore 资源管理器

2. 打开 References 文件夹

3. 选中 Arction 程序集,通过 Delete 按钮或是右击选择删除将其删除。

如何在其他版本中添加编号

1. 打开 Solution Explorer 资源管理器

2. 打开 References 文件夹。

3. 增添编号至新图表中。右击编号文件夹,选择 Add Reference... 再选 Arction DLL 文件。

由于 API 可能发生变动,您需要在改动过的内容上修复源代码。

如果图标完全不兼容(比如 Visual Studio 无法从格式编辑器上加载 UI),

您需要从*.Designer.cs 和 *.resx 文件中删除 LightningChart 性能调节器

如何从*.Designer.cs 文件中删除性能调节器

1. 使用 txt 文本编辑器打开*.Designer.cs 文件(如果可能的话,使用除 Visual Studio 以外的其他编辑器)

2. 查找并删除包含有 LightningCharttUltimate 调节器的语行。如:this.m_chart.Background =

((Arction.LightningChartUltimate.Fill)(resources.GetObject("m_chart.Background")));

不需要删除位置和大小等不变的内容,删除通过类似"NN = ((...)(resources.GetObject("...")));"的方法从来源读取到的内

容即可。

如何从*.resx 文件中删除序列化项

1. 使用 txt 文本编辑器打开*.resx 文件

2. 找到含有 Arction 目标的 xml 标签(名称具有图表信息,极富辨识性。如:“m_chart”或是“LightningChartUltimate1”)

3. 删除含有图表<chart>标签至 xml 目标(</data> tag)的语行

比如:图表背景以下列 xml 目标呈现序列化,您应该从*.resx 文件中删除下下全部语行:

<data name="m_chart.Background" mimetype="application/x-

microsoft.net.object.binary.base64">

<value>

AAEAAAD/////AQAAAAAAAAAMAgAAAGRBcmN0aW9uLkxpZ2h0bmluZ0NoYXJ0VWx0aW1hd

GUsIFZlcnNp

b249NC42LjEuMjAwMSwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj03MmY1N

WZiZDY5MDFm

... lots of encoded stuff ...

YXlvdXQBAAAAB3ZhbHVlX18ACAIAAAAAAAAACw==

</value>

</data>

请注意,有的目标可能非常的大,比如标题行可能有 200 行,视图通常会更大(比如 3D 视图可能有大概 2000 行)。

如果您手头上有好几个图表,它们所有的序列内容都需要删除。编辑器搜索是帮助您快速查找到图表目标的好帮手。

从*.resx 文件中删除目标,将*.Designer.cs 文件中的调节器与之相关联后,就能够用 Visual Stidio 格式的编辑器成功打

开项目。

3. 许可证管理

3.1 添加许可证

通过运行 License Manager 应用程序,从 Windows 的开始菜单程序/ Arction / LightningChart Ultimate SDK / License

Manager 来管理许可证。

Arction 组件使用许可证密钥保护系统。您只能使用有效许可证的组件。许可证有以下信息:

•启用功能,如 ViewXY,View3D,ViewPie3D,Maps,ViewPolar,ViewSmith,Volume

渲染,信号工具

•WPF / WinForms /两种技术

•许可证可以在多少台电脑上激活(标准配置为 1 台)。

•订购到期日(更新和支持结束日期)

•技术支持包容性

•开发者许可证或浮动许可证

•学生执照

当您将 Arction 组件从 Toolbox 拖到应用程序中时,您可能会被要求在许可证管理器窗口中提供许可证密钥。 从您发

送的许可证文件中一次添加所有许可证密钥。 单击文件中的添加...并浏览.alf 文件。

图 3-2。在 LicenseManager 中添加许可证密钥。

添加许可证后,每个开发人员的许可证都将自动激活到互联网上的许可证服务器。

如果互联网连接不可用,请使用“通过电子邮件激活/停用”功能。

图 3-3。通过电子邮件离线激活许可证。

按照屏幕上的说明,通过 [email protected] 向 Arction 授权团队发送电子邮件。

Arction 将提供如何安装离线许可证的说明。预计在 2 个工作日内可收到回复。

注:通过电话启动/禁用不可用,因为密钥代码包含数千个字符。

注:从 LightningChart v.7.1 起,ChartManager 组件不再需要许可证密钥。

注:从 LightningChart v.8.0 起,不支持 LIC 格式的许可证密钥。 需要提供 ALF 许可证。 如果您没有收到 ALF 许

可证,请联系 Arction。

3.2 删除许可证

许可证可以使用“删除”按钮从系统中删除。 它需要联网才能自动停用。 如果互联网连接不可用,请使用“Activate /

Deactivate via e-mail”功能。

使用模式=停用。

许可证被禁用后,可以将其安装到另一台计算机上。

3.3 提取部署密钥

为了能够将 Lightning Chart 应用程序应用到你所部署软件的计算机上,必须在代码中应用部署密钥。 可以通过按复制

部署键到剪贴板按钮从许可证密钥中提取部署密钥(Copy deployment key to Clipboard)。

3.4 在应用程序中应用部署密钥

在代码中,为组件使用静态 SetDeploymentKey 方法。 例如:

WinForms

在组件需要使用之前,调用 SetDeploymentKey 方法。 例如: 在主要(Main)方法的开头,或在表单(Form)或用户

控件(UserControl)的构造函数之中。 以下是一个在主要(Main)方法的开头如何应用的示例。

using System;

using System.Collections.Generic; using System.Linq;

using System.Windows.Forms;

namespace WindowsFormsApplication1

{

static class Program

{

/// <summary>

/// The main entry point for the application.

/// </summary> [STAThread]

static void Main()

{

//Set Deployment Key for Arction components

string deploymentKey = "VMalgCAAO6kO1RgiNIBJABVcG.R..Kikfd...";

Arction.WinForms.Charting.LightningChartUltimate.SetDeploymentKey(deploymentKey); Arction.WinForms.SignalProcessing.SignalGenerator.SetDeploymentKey(deploymentKey);

Arction.WinForms.SignalProcessing.AudioInput.SetDeploymentKey(deploymentKey); Arction.WinForms.SignalProcessing.AudioOutput.SetDeploymentKey(deploymentKey);

Arction.WinForms.SignalProcessing.SpectrumCalculator.SetDeploymentKey(deploymentKey);

Arction.WinForms.SignalProcessing.SignalReader.SetDeploymentKey(deploymentKey);

Application.EnableVisualStyles();

Application.SetCompatibleTextRenderingDefault(false);

Application.Run(new Form1());

}

}

}

WPF

在组件需要使用之前,调用 SetDeploymentKey 方法。 例如: 在应用程序类构造函数(App class constructor)的开头,

或在 Window 或用户控件(UserControl)的构造函数之中。 以下是一个在 App.xaml.cs 的开头如何应用的示例:

using System;

using System.Collections.Generic; using System.Configuration;

using System.Data; using System.Linq; using System.Windows;

using Arction.Wpf.SignalProcessing;

namespace WpfApplication1

{

/// <summary>

/// Interaction logic for App.xaml

/// </summary>

public partial class App : Application

{

public App()

{

//Set Deployment Key for Arction components string deploymentKey = "lfngCAAO6kOfjh…";

//Set Deployment Key for fully bindable chart, if you use it Arction.Wpf.BindableCharting.LightningChartUltimate

.SetDeploymentKey(deploymentKey);

//Set Deployment Key for semi-bindable chart, if you use it

Arction.Wpf.SemibindableCharting.LightningChartUltimate

.SetDeploymentKey(deploymentKey);

//Set Deployment Key for non-bindable chart, if you use it Arction.Wpf.Charting.LightningChartUltimate

.SetDeploymentKey(deploymentKey);

SignalGenerator.SetDeploymentKey(deploymentKey); AudioInput.SetDeploymentKey(deploymentKey);

AudioOutput.SetDeploymentKey(deploymentKey); SpectrumCalculator.SetDeploymentKey(deploymentKey);

SignalReader.SetDeploymentKey(deploymentKey);

}

}

}

注意!在应用程序中没有设置部署密钥时,在目标机器中也将进入 30 天试用模式。

3.5 运行调试器

在部署密钥设置正确的情况下,从 Visual Studio 中运行调试器的项目并从系统中找不到开发许可证密钥时,图表进入

慢渲染模式,最大 FPS 为〜1,图表显示消息文本图表。

使用 LightningChart 直接开发和调试无开发许可证密钥,是禁止的。

3.6 试用期

试用期为 30 天,之后,您必须购买许可证才能继续使用本产品。所有通过试用许可证创建的项目也将在更新到适当的

许可证之后才能生效。当运行使用试用许可证构建的图表应用程序时,您将看到一个试用版 nag 水印消息。

3.7 浮动许可证(Floating licenses)

浮动许可证可以安装到无限数量的计算机上。 并发开发人员数已由 Arction 公司配置。 同时,只有购买过的并发用户

数可以使用 LightningChart 进行开发。 在开发人员完成 LightningChart 开发之后,到另一个开发人员开始使用之前,

大约有 10-15 分钟的超时时间。

必须设置与开发人员许可证相同的部署密钥。

默认情况下,浮动许可证由 Arction 公司的许可证服务器(Arction Licensing Server)控制。 开发时需要连续的网络连

接。

客户端浮动许可证控制器(Customer-side floating license controller)现在也可用。开发计算机通过局域网连接到在客

户组织中运行的服务。不会出现与 Arction 公司或其他各方的在线沟通情况。 通过许可证,Arction 公司提供了安装控

制器服务和浮动许可证的独立说明。

4. LightningChartUltimate 组件

4.1 从工具箱中添加至 Windows Forms 项目中

从工具箱将 LightningChartUltimate 控件新增至窗体中,图表会在窗体中出现,属性会在 Properties

窗口中显示。

图 4-1。LightningChartUltimate 控件新增至 Windows Forms Designer 当中。

4.1.1 属性

您可以自由修改属性,在组对象中插入新序列或其它对象。

序列数据点必须由代码给出。

4.1.2 事件处理器

图表的事件处理器主要级别可使用属性面板进行分配。新增至组对象中的对象,事件处理器必须使

用代码进行分配。

4.1.3 最优方法以及版本更新

在 Visual studio 项目中,图表属性数据可被序列化至.resx 文件中。LightningChartUltimate API 往

往会随着版本更新而改变一点,可能导致在.resx 文件中新版本会出现不兼容序列化。

学习 LightningChartUltimate 的应用程序界面时,使用属性面板会更加得心应手。

强烈推荐且最容易进行更新的方式是使用代码的方式添加所有序列、事件处理器等等。程序会正常

加载,可能在编译时会出现错误,相对于修复.resx 文件来说,对它们实施修复是非常容易的。您可

能会丢失某些属性定义,但如果使用的是代码,会有详细的说明。

4.2 从工具箱中向 WPF 程序中添加

从工具箱将 LightningChartUltimate Semi-bindable 或 Bindable WPF 控件添加至窗口或其它集合

当中。图表显示在设计器中,属性显示在“属性”窗口中。

XAML 编辑器会显示内容与针对图表默认属性进行的修改。

4.2.1 属性

您可以自由修改属性,在组对象中插入新序列或其它对象。

在 Semi-bindable 图表当中,序列数据点必须使用代码给出。

在 Bindable 图表中,序列数据点必须通过绑定数据或代码添加至序列当中。

4.2.2 事件处理器

事件处理器的图表主要级别可使用属性面板进行分配。针对添加至组对象中的对象,事件处理器必

须使用代码进行分配。

图 4-2 LightningChartUltimate 控件添加至 WPF 设计器中

4.3 添加至 Blend WPF 程序

在项目选项卡中,选中“References”右击并选择“Add reference”。在 c:\program files

(x86)\Arction\LightningChart UltimateSDK v.7\LibNet4 中浏览

Arction.WPF.LightningChartUltimate.dll 文件。

选中“Assets”标签,在搜索框中输入“Lightning”,搜索结果中会显示 LightningChartUltimate 行。

将对象拖拽到 WPF 窗体中。

图 4-3 将 LightningChartUltimate 控件添加至 Blend For Visual Studio 2013 设计器中。

4.3.1 最优方法、版本更新

图 表 属 性 数 据 存 储 在 XAML 中 。 新 版 本 的 属 性 集 合 会 有 略 微 的 不 同 , 可 能 会 导 致

LightningChartUltimate 对象无法出现才设计器当中,稍后需要进行相关的 XAML 修改。XAML 树

形标签可能会非常庞大,编辑起来非常困难。

对于最容易的更新方式来说,我们强烈推荐创建图表对象、设置页面布局、在设计器中校准相关属

性。使用代码设置其余部分,或者用代码创建图表对象。

4.3.2 防止图表模糊

这是 WPF 的共同特征,与图表本身无关,但在 LightningChart 的准确渲染中显而易见。

为了防止图表出现模糊,设置图表的父级控件为 UseLayoutRounding = True。在设计器中可能仍然

模糊,但在运行应用程序时会看起来很清晰。父级控件可以是例如网格、画布、DockManager 等。

4.4 在 WPF 应用程序中使用 Windows 窗体图表

在WPF中使用Arction Windows Forms控件怎么样?

在 WPF 中 , 您 可 以 通 过 添 加 Arction.WinForms.Charting.LightningChartUltimate.dll 和

Arction.WinForms.SignalProcessing.SignalTools.dll作为您的项目参考并通过代码创建来使用

Windows Forms组件。LightningChartUltimate控件和大多数其他控件都有一个内置的UI。使用

WindowsFormsHost作为父级容器。使用它们的方法和属性,这些控件也可以在没有UI的情况下也

可使用。

我应该在WPF 中使用Arction.WinForms.LightningChartUltimate 吗?

由于WPF应用程序不需要WindowsFormsHost控件,因此WindowsFormsHost控件不具有通用的“空

域”问题,因此WPF图表程序集建议使用WPF应用程序中的WinForms图表。另一个优点是WPF图可

以具有透明背景,图表可以放在另一个图表上。

当 需 要 绝 对 最 大 性 能 时 , 可 以 使 用 WindowsFormsHost 控 件 与 WinForms 图 表 控 件 。

WindowsFormsHost + WinForms图表渲染速度稍快。

如果您选择在WPF应用程序中使用WinForms图表,则必须将其放在WindowsFormsHost控件中。将

WindowsFormsHost控件(在Visual Studio WPF工具箱中找到)添加到WPF表单中。

Figure 4-4 设计师中的 WPF 示例应用程序。执行应用程序时, WindowsFormsHost 控件会将

LightningChartUlitmate对象保持在内部。

创建一个LightningChartUltimate对象,并将其放在WinFormsHost对象的代码中。打开表单xaml.cs

文件并在表单构造函数中创建图表:

public WindowMain()

{

InitializeComponent();

CreateChart();

}

private LightningChartUltimate m_chart = null;

void CreateChart()

{

//可以使用许可证管理器程序从安装的许可证密钥生成可嵌入密钥。

m_chart = new LightningChartUltimate(“/ *在许可证管理器程序* /”中创建密钥);

//将图表对象设为子对象到 WindowsFormsHost 控件

windowsFormsHost1.Child = m_chart;

}

图4-5 执行WPF演示应用程序。 参考实际的WPF演示应用程序源代码,即时提供实时数据。

4.5 对象模型

LightningChart的对象模型可以通过Visual Studio的属性编辑器得到最好的掌握。

图 4-6 可以在 Windows 窗体和 WPF 属性窗口中的图表类别下找到 LightningChart 特定属性。通过扩展节点,或在

创建新对象的 WPF 中,您将注意到在整体中存在一组巨大的属性。

4.5.1 Windows Forms 与 WPF 之间的区别

从图表种类来看,Windows Forms 与 WPF 之间的属性树状图和对象模型是完全相同的。主要区别

有:

Windows Forms WPF

渲染选项属性 渲染选项 图表渲染选项

背景填充属性 背景 图表背景

字体 系统、图、字体 Artion.WPF.LightningChartUltimate.WPF

字体

颜色 系统、图、颜色 系统、Windows、媒体、颜色

在以下章节中,Windows Forms 属性名称遵上所述,除非另有说明。

LightningChart 有以下主要视图:

-ViewXY(详情请参考第五章节有关内容)

-View3D(详情请参考第六章节有关内容)

-ViewPie3D(详情请参考第七章节有关内容)

-ViewPolar(详情请参考第八章节有关内容)

-ViewSmith(详情请参考第九章节有关内容)

可视化视图能够通过设置 ActiveView 相关属性进行变动。系统默认视图为 ViewXY.。

4.6 外观配置/性能设置

渲染选项(WPF 中的图表渲染选项)包含了配置外观和性能的属性。

图 4-7 渲染选项属性

设备类型:

Auto 是 Auto Prefer D11 选项的别名。这是系统的默认设置。

AutoPreferD9 更适用于 DirectX9 的硬件渲染效果,并以可用性为选择依据,从如下的顺序中自动

选择匹配设备:HW9->HW11->SW11->SW9。当硬件不可用时,自动返回至 WARP(SW11)软件

进行渲染。

AutoPreferD11:更适用于 DirectX11 的硬件渲染效果,并以可用性为选择依据,从如下的顺序中自

动选择匹配设备:HW11->HW9->SW11->SW9。当硬件不可用时,自动返回至 WARP(SW11)软

件进行渲染。这是具有极高性能的设定,并能够制作出拥有良好效果的外观。可视化外观比 DirectX9

渲染器效果更好。

HardwareOnlyD9 仅使用硬件 9 来进行渲染工作。

HardwareOnlyD11 仅使用硬件 11 来进行渲染工作。

SoftwareOnlyD11 使用 DirectX11 WARP,和 DirectX9 标识光栅化程序相比非常快速,但是比硬

件选项要稍微慢一些。

SoftwareOnlyD9 使用 DirectX9 标识光栅化程序(非常慢)。

归零:如果图表处于隐藏状态,或是在背景中处于静止状态,这时候可以设置 DeviceType(设备类

型)至归零,将图形中的资源释放到其他图表中。

字体饱和度

低:低档位能够设置出最棒的外观效果,但是字体是非消除锯齿效果的,因此想要得到合适的外观效

果,请谨慎选择该字体类型。

中:中档位能够设置出与低档位类似的完美外观效果,在字体周围有简易的消除锯齿效果。这同时也

是系统默认设定。

高:高档位能够设置出最好的外观效果,同时有着卓越的性能。

消除锯齿效果等级

整体场景消除锯齿效果要素,可用性取决于硬件设备。更高的品质能够制作出更棒的外观效果,同时

成本也更高。设置 0 或 1 来增强性能值。

WaitForVSync

建议:保持默认值。启用后,保持渲染效果直到显示正在进行下一次刷新(例如 1/60 秒的下一个倍

数)。仅暂时推荐使用,举例来说,当使用外部屏幕捕捉应用程序进行同步化,来防止条状化时;或

是当屏幕顶端的图像未与屏幕底端的图像同步时,推荐使用此方法。可能会显示为已受损的波形数

据。启用后拥有显著的性能。

5. ViewXY

ViewXY 允许以笛卡尔坐标,XY 图格式呈现各种点线系列,区域系列,高低系列,强度系

列,热图,条系列,带,线系列游标等。系列与 X 轴和 Y 轴绑定,它们使用指定轴的值范

围。

ViewXY 还显示地理位置图,请参见第 5.24 节。

图 5-1. ViewXY 对象树状图。

图 5-2. ViewXY 零件的快速概述

图形边距

默 认 情 况 下 , 轴 数 和 其 设 置 会 自 动 调 整 边 距 。 通 过 设 置

ViewXY.AxisLayout.AutoAdjustMargins = False,Margins 属性适用。如果要使图形填充整个

控制区域,请将所有边距设置为 0。

图形边框

边框围绕图形区域绘制,位于边距位置。可以使用 GraphBorderColor 属性设置颜色。

背景

使用 Background 属性设置背景填充。有很多填充选项可用。

图表背景

使用 GraphBackground 属性设置图形背景填充。图形是呈现所有网格,系列,系列光标,事

件标记等的区域。

标题

这是图表的主要标题。使用 Title.Text,Title.Shadow ...属性设置文本,阴影,颜色,文本边

框,旋转,字体,对齐等。

Y 轴

见 5.2 节。

X 轴

见 5.3 节。

注释

见 5.19 节。

图例框

见第 5.20 章。

滚动条

具有无符号 64 位值范围的滚动条,可直接支持大量样本索引。实际上,HorizontalScrollBars

和 VerticalScrollBars 是图表根级别的集合属性,但是它们知道 ViewXY 的边距。见第 10 章。

5.1 轴布局选项

一般属性调整轴位置,自动边距等可以在 ViewXY.AxisLayout 属性和子属性中找到。

图 5-3. AxisLayout 属性树状图。

5.1.1 自动边距

启用 AutoAdjustMargins 时,会调整图形大小,以便所有轴和图表标题都有足够的空间。当

它被禁用时,ViewXY.Margins 属性适用并允许手动设置页边距。

在运行时,您可以通过调用 ViewXY.GetMarginsRect 方法来检索像素中的边距矩形。这既适

用于自动和手动页边距,并且在需要执行基于屏幕计算的计算或对象放置时非常有用。

5.1.2 设置轴的放置方式

X 轴自动放置

XAxisAutoPlacement 控制如何垂直放置 X 轴。

图 5-4。 XAxisAutoPlacement = AllBottom。添加了三个 X 轴,都位于图形下方。

图 5-5。 XAxisAutoPlacement = AllTop。所有 X 轴均位于图形上方。

图 5-6。 XAxisAutoPlacement = BottomThenTop。轴分布在图形的下方和上方,每隔一个轴线从底部开始向

对面分布。

图 5-7。 XAxisAutoPlacement = TopThenBottolm。轴分布在图形的下方和上方,每隔一个轴线从顶部开始

向对面分布。

图 5-8. XAxisAutoPlacement = Explicit. 轴显示在你选择的一侧 . XAxis1 的 ExplicitAutoPlacementSide

property 设置为 Bottom, XAxis2 and XAxis3 在顶部.

图 5-9。 XAxisAutoPlacement = Off。自动轴放置被禁用,每个轴的位置和对齐属性单独应用。第一轴位置

= 0,第二轴位置= 50,第三轴位置= 100。

Y 轴自动放置

YAxisAutoPlacement 控制如何垂直放置 Y 轴。

图 5-10。 YAxisAutoPlacement = AllLeft。添加三个 Y 轴,都位于图形的左侧。

图 5-11。 YAxisAutoPlacement = AllRight。所有 Y 轴都位于图形的右侧。

图 5-12。 YAxisAutoPlacement = LeftThenRight。轴从左侧开始,每隔一个轴向左侧和右侧分配到相对侧。

图 5-13。 YAxisAutoPlacement = RightThenLeft。轴分布到图形的左侧和右侧,每隔一个轴线分别从右侧开

始。

Figure 5-14. YAxisAutoPlacement = 轴 明 确 显 示 在 你 选 择 的 那 边 . YAxis1 和 YAxis2 的

ExplicitAutoPlacementSide 属性设置为 Left, YAxis3 为 Right.

图 5-15。 YAxisAutoPlacement = Off。自动轴放置被禁用,每个轴的位置和对齐属性单独应用。第一轴位置

= 0,第二轴位置= 20,第三轴位置= 80。

5.1.3 将图形段和 Y 轴放置在其中

如果定义了几个 Y 轴,它们可以以三种不同的方式垂直对齐:分层,堆叠和分段。这可以由

ViewXY.AxisLayout.YAxesLayout 属性选择。

分层

在分层视图中,所有 Y 轴从图形的顶部开始,并伸展到图形的底部。

轴和与它们绑定的系列具有相同的垂直空间。

图 5-16。 YAxesLayout = Layered 中的 4 个 Y 轴的示例视图。

叠放

在叠放视图中,每个 Y 轴都有一个自己的垂直空间。所有 Y 轴的高度相等。

图 5-17。 YAxesLayout = Stacked 中的 4 个 Y 轴的示例视图。

分段

在叠放视图中,垂直空间在段之间划分。每个段可以包含多个 Y 轴。每个段的关系高度可

以设置,并且一个段内的所有 Y 轴都可以获得段的高度。

必须在 AxisLayout.Segments 集合中创建段。段只有一个属性——Height。它是与其他部分相

对的一个尺寸。它没有在屏幕像素中定义,因为它们需要按照图表的大小进行重新缩放。

可 以 通 过 设 置 yAxis.SegmentIndex 属 性 为 Y 轴 分 配 一 个 段 。 SegmentIndex

AxisLayout.Segments 集合中的索引。

图 5-18。 YAxesLayout = Segmented 中的 4 个 Y 轴的示例视图。前两段的高度为 1,最后一段的高度为 2.5。

Axis1.SegmentIndex = 0,Axis2.SegmentIndex = 1,Axis3 和 Axis4.SegmentIndex = 3。

选择“堆叠”或“分段”视图时,可以使用 ViewXY.AxisLayout.SegmentsGap 属性来调整图形段

之 间 的 垂 直 间 距 。 如 果 定 义 了 大 量 的 Y 轴 , 则 应 启 用

ViewXY.AxisLayout.AutoShrinkSegmentsGap 属性,以自动减少间隙。通过这样做,每个 Y 轴

至少得到一些要绘制的垂直空间。如果需要具有细分专用的用户界面逻辑,您可以使用

ViewXY.GetGraphSegmentInfo()方法来查找图形边框边界的位置。

5.1.4 轴网格带

作为补充,轴网格(划分)间隔可在图形背景中显示。设 ViewXY.AxisLayout.AxisGridStrips = X,

用 X 轴设置带。设 AxisGridStrips = Y,用 Y 轴设置带。AxisGridStrips = X 轴设置带与 Y 轴设置

带。将其设为 None,无任何网格带可用。

XGridStripAxisIndex 可对 X 轴进行设置,供带使用。只有一个 X 轴可进行设置。

当 YAxisLayout = Layered 时,YGridStripAxisIndexLayered 可对 Y 轴进行设置,供带使用。当

YAxisLayout = Stacked 时,所有的 Y 轴会有自己的带。

带的颜色可在 X 轴或 Y 轴对象的 GridStripColor 属性中进行更改。

图 5-19 AxisGridStrips = None

图 5-20 AxisGridStrips =X

图 5-21 AxisGridStrips = Y

图 5-22 AxisGridStrips = Both

5.1.5 其它轴布局选项

XaxisAutoPlacement 或 YAxisAutoPlacement 授权时,AutoAdjustAxisGap 可用像素在两个相邻

的轴区域中设置空格。

XAxisTitleAutoPlacement (或 YAxisTitleAutoPlacement)获得授权时,坐标轴标题距离会根据值标

签 长 度 、 轴 对 齐 选 项 、 勾 线 自 动 进 行 计 算 。 如 果 XAxisTitleAutoPlacement ( 或

YAxisTitleAutoPlacement)未获得授权,轴对象属性的 DistanceToAxis 会直接设置到轴线的距离。

5.2 Y 轴

您可以无限地定义 Y 轴的数量。使用 Y 轴集属性添加 Y 轴。

5.2.1Y 轴分类属性

图 5-23 Y 轴、分区、网格

5.2.2 点值标签格式化

如果您想让小数计数或时间格式表示为可见区自动进行计算,AutoFormatLabels 可以保持启用状态。

如果要手动设置 数值, 禁用 AutoFormatLabels , 使用 LabelsNumbersFormat 属性。常规

Double.ToString()方法参数字符串应用。手动设置时间格式,禁用 AutoFormatLabels, 并使用

LabelsTimeFormat 属性。DateTime.ToString()方法参数字符串应用,但是此处有所改进。

DateTime.ToString()只接受有 DateTime.ToString()的三个秒级(.fff)但 LabelsTimeFormat 支

持 任 何 秒 级 ( 例 如 “.ffffffff” ), 允 许 良 好 的 缩 放 视 图 。 启 用 AutoFormatLabels 时 ,

LabelsNumberFormat 属性通常用于格式化数字的十进制显示。在 AutoFormatLabels 为启用状态

时,LabelsNumberFormat 属性被广泛应用于格式化数字的十进制表示方法。

5.2.3 值类型

值类型属性可以被设为不同的设置设定:

常数数字格式,用于整数和十进制表达式。当禁用AutoFormatLabels时,将使用

LabeslNumbersFormat。

时间

时间格式,用于当日时间展示。当禁用AutoFormatLabels时,将使用LabelsTimeFormat。

日期时间

日期介绍,带有当日可选时间。当禁用AutoFormatLabels时,LabelsTimeFormat像时间类型一样

也适用于此类型。

注意!为了获得最佳的准确性,建议您在图表中显示的日期之下设置DateOriginYear、

DateOriginMonth和DateOriginDay。

使用DateTimeToAxisValue方法从.NET DateTime对象获取轴值,以便在串联数据中使用。

MapCoordsDegrees

用十进制表示地图坐标。

例: 40.446195° -79.948862°

MapCoordsDegNESW

地图坐标以十进制度表示,用N、E、S、W指出。

例: 40.446195N 79.948862W

MapCoordsDegMinSecNESW

地图坐标以度、弧分、弧秒表示,用N、E、S、W指出。

例: 40°2'13"N 9°58'2"W

MapCoordsDegPadMinSecNESW

地图坐标以度、弧分、弧秒表示,用 N、E、S、W 指出。若弧分和弧秒值<10,则用零填充。因为

数字对齐,所以这是在 Y 轴上呈现坐标的好方法。

例: 40°02'13"N 9°58'02"W

5.2.4 范围调定

通过给Minimum和Maximum属性值来设置值范围。最小值必须小于最大值。如果您尝试设置最小

值>最大值,或相反,则内部限幅器将把该值限制在其他值附近。要同时设置两个值,请使用

SetRange(...)方法。如果您在SetRange中跳过最小值>最大值,则会自动翻转此值,以使最小值

<最大值。

通过鼠标拖动轴可以直接滚动Y轴的值范围,启用MouseScrolling。可以通过向上或向下拖

动比例笔尖区域(轴的末端)来修改“最小值”或“最大值”,启用MouseScaling。

5.2.5 恢复范围

Axis具有RangeRevertEnabled、RangeRevertMaximum和RangeRevertMinimum属性。当从右向

左应用鼠标缩放时,它们可用于将轴范围恢复为特定值。详见5.21.5。

5.2.6 分割

通过启用AutoDivSpacing,可以自动完成主分割间距。根据标签字体大小和

AutoDivSeparationPercent属性,间距会尽可能容易地被计算。增加值以获得较少的主分割。次要

分割通过使用MinorDivCount属性值在主分割之间被计算。

如果要通过大小来控制间隔,通过设置禁用AutoDivSpacing,您可以使用MajorDiv属性手动控制

分隔间距。或者使用MajorDivCount属性通过分区计数来控制间距。

KeepDivCountOnRangeChange属性可用于在范围更改时强制维持分区计数相同,因为

MajorDivCount和MajorDiv互相依赖。

MajorDivTickStyle属性可以设置主分割刻度风格。使用MajorDivTickStyle.Alignment属性编辑刻

度和标签方向。值标签被绘制在主分割刻度旁边。分别使用MinorDivTickStyle属性编辑次要分割

属性。

5.2.7 网格

水平网格线绘制在划分刻度的垂直位置。主要网格为主分割,次要网格为次分割。使用MajorGrid

和MinorGrid属性来编辑外观。

5.2.8 自定义刻度

您可以手动设置轴刻度的位置。在 CustomTicks 列表属性中对位置信息进行自定义设置。设置

CustomTicksEnabled 为 true 值。

CustomAxisTicks 类别中包含有一个刻度,网格或两者都有。使用 Style 在刻度、网格或是刻度与网

格之间分别进行选择。在颜色属性一栏中设置刻度或网格的颜色。在长度属性一栏中设置刻度的长

度。

网格线模式遵循轴线的 MajorGrid.Pattern 和 PatternScale 属性的设定。

CustomAxisTick 具有 AxisValue 和 LabelText 的属性。 使用自定义刻度时,禁用

AutoFormatLabels 显示自定义标签文本。

图 5-24。 在 Y 轴上自定义刻度。 在左侧,axis.AutoFormatLabels = false. 在右侧,AutoFormatLabels = True.

在代码中设置了新的值后,请记得调用 InvalidateCustomTicks()。

当 CustomAxisTicksEnabled 为 true 时,较小刻度或网格则无法显示。因此想要设置较小刻度或网

格的任意值,只需要使用不同的颜色或是线条长度将 CustomAxisTicks 添加至 CustomTicks 集合中

即可。

5.2.9 反转 X 轴和 Y 轴

X 轴和 Y 轴可以反转,使最小值高于/大于最大值。

举例来说,当您想要取消分配给 Y 轴的系列数据极性时,这是非常便捷的功能。

5.2.10 对数数轴

使用对数陈述将 ScaleType 设置为对数。使用 LogBase 属性设置对数基本参数。图表能够显示 0 至

1 之间的对数值。使用 LogZeroClamp 在数轴中设置最小值。使用记录数轴中的经典最小值,设置

1。想要使用零以下的数值,请设置是适合您的数值,类似 1.0E-20 的精确小数值。若想使用特殊格

式化勾选标签,请设置 LogLabelsType。

以十为底的对数展示

图 5-25。 对数 Y 轴,值接近零。 LogZeroClamp 设置为 1.0E-20。 LogBase 设置为 10,LogLabelsType 设

置为 Log10Exponential,以显示 1.0E 演示文稿中的值。

自然对数

图 5-26。 自然对数视图。 LogBase 设置为 Math.E LogLabelsType 设置为 LogE_MultiplesOfNeper。

5.2.11 在数轴值和屏幕坐标之间进行转换

数轴具有将数轴值(数据点值)转换为屏幕坐标的方法,以及将屏幕坐标转换至数轴值的方法。使用

ValueToCoord 方法将数轴值转换为屏幕坐标,使用 CoordToValue 将屏幕坐标转换为数轴值。如果

您喜欢像素,而不是设备独立像素(DIP)的话,您可以将 UseDIP 设置为 False。

5.2.12 MiniScale

MiniScale

X 轴和 Y 轴的小规模替换。在某些应用程序中,这种比例展示能够快速的进行视觉概述,不然的话,

就放置不下实际的轴。默认情况下,MiniScale 是不可见的。它是 Y 轴类别的一个子属性。当使用

数轴时,MiniScale 就不能够被使用。

MiniScale 的 X 尺寸始终绑定到初始的 X 轴(XAxes [0])上。通过修改 Units.Text 属性的 X 和 Y

轴来设置可见单位。

图 5-27。 MiniScale 在图的右下角。

5.3 X 轴

X 轴分割和网格设置跟 Y 轴设置一致。可以通过鼠标滚动轴,并且可以通过拖动刻度头来设置最小

值和最大值。

5.3.1 实时监控滚动

当进行实时监控解决方案时,X 轴必须滚动到适合当前的监控位置,通常是最新信号点的时间戳。

将新信号点设置为系列后,将最新的时间戳设置为 ScrollPosition 属性。 LightningChart 有几种滚

动模式,可以通过 ScrollMode 属性进行选择。

不滚动

当给 ScrollPosition 设置一个数值时,不应用滚动。这可能是您在其他应用程序中使用图表时想要使

用的选项,而不是实时监控。

步进

X 轴收集满,然后所有系列数据的 x 轴通过步进间隔向左移动。然后 X 轴再次收集完毕等等。步进

间隔属性定义为数值范围。

图 5-28。 X 轴滚动模式:步进

滚动

X 轴保持静止,直到达到滚动间隙。然后所有系列的 X 轴向左移动。如果要在滚动位置到达 X 轴的

末尾时滚动生效,请将 ScrollingGap 设置为 0. ScrollingGap 属性定义为图形宽度的百分比。

图 5-29。 X 轴滚动模式:滚动

滚动时的波形稳定性

当使用 series.AddPoints()或 AddValues()或 AddSamples()时,LightningChart 支持实时信

号的增量渲染数据构建。简而言之,这意味着渲染数据只能从新的数据部分计算出来,并结合现有的

渲染数据。

PointLineSeries,SampleDataSeries,AreaSeries 和 HighLowSeries 具有 ScrollMode = Scrolling

的特定属性,可以影响滚动序列的视觉稳定性或维持波形质量。该属性称为 ScrollingStabilizing。

当启用它时,浮点坐标被调到最接近的整数坐标,这导致视觉上稳定的非波动波形。在大多数情况

下,这是最好的方法。然而,当它调到坐标时,它可能会略微扭曲相位信息。

当 ScrollingStabilizing 被禁用时,渲染数据使用浮点坐标,当 GPU 决定像素坐标时,显示为微小

的波形。这提供了更好的视觉质量,特别是当显示正弦数据时,几乎每隔一个像素都有上下移动。

要使用增量渲染数据构造,请添加新点如下

chart.BeginUpdate();

series.AddPoints(array,false);

xAxis.ScrollPosition = latestXValue;

chart.EndUpdate();

随时可以使用-------------------------------------------------------------------------------InvalidateData()

调用序列,完全刷新渲染数据。

chart.BeginUpdate();

series.AddPoints(array,false);

series.InvalidateData();

xAxis.ScrollPosition = latestXValue;

chart.EndUpdate();

性能 稳定 阶段

series.AddPoints(),

ScrollStabilizing

disabled

完美 受损

series.AddPoints(),

ScrollStabilizing

enabled

完美 最佳 轻微受损

series.AddPoints(),

InvalidateData() 受损

受损

完美

扫进

扫描模式可能是最方便用户的实时监控视图。扫描使用两个 X 轴。第一个被收集完毕,然后第二个

X 轴出现一个扫描间隙。第二个 X 轴扫过第一个 X 轴。两个 X 轴显示自己的值标签。 SweepingGap

属性定义为图形宽度的百分比。

图 5-30。 X 轴滚动模式:扫进

触发

X 轴位置由超过或低于触发电平的串联值确定。在触发属性中设置触发选项。您必须设置一个系列

作 为 触 发 系 列 。 可 接 受 的 触 发 系 列 类 型 是 PointLineSeries 和 SampleDataSeries 。 用

Triggering.TriggerLevel 设置触发 Y 电平。使用 Triggering.TriggeringXPosition 命令将水平触发点

水平绘制为图形宽度的百分比。记住通过启用 Triggering.TriggeringActive 属性来设置触发活动。

图 5-31。 X 轴滚动模式:用静态 X 网格触发。

当使用触发的 X 轴滚动位置时,通常用值和网格展示常 X 轴是不适合的,因为它们根据传入的串联

数据从一个位置跳到另一个。相反,您应该使用静态 X 网格。通过设置 LabelsVisible = false,

MajorGrid.Visible = false 和 MinorGrid.Visible = false 来隐藏常规 X 轴对象。然后,通过设置

MajorStaticXGridOptions 和 MinorStaticXGridOptions 来显示静态 X 网格。

对于刻度指示,您可以使用 Y 轴 MiniScale 或定义注释(参见第 6.19 节)对象来显示像“200 ms /

div”的范围。

5.3.2 刻度断点

从版本 8 开始,X 轴支持刻度断点。刻度断点允许排除特定的 X 范围,例如非活动交易时间/日期或

机器生产时间。已分配给指定 X 轴的所有系列都被剪切,包括轴和标签本身。

当 ScaleBreaks 可以使用时有限制:ScrollMode 必须设置为“None”,ScaleType 设置为“Linear”。

将 ScaleBreak 对象插入到 X 轴的 ScaleBreaks 集合中。

图 5-32。 ScaleBreak 属性。

用 Begin 和 End 指定中断的范围。它们作为轴值给出,而不是 DateTimes。如果使用 DateTimes,

请使用 axis.DateTimeToAxisValue 方法进行转换。

间隙宽度可以用间隙进行调整,如果没有间隙可见,则可以认为是 0。间隙外观可以使用样式进行配

置。

•使用 Style ='Fill',使用 Fill 属性调整填充。

•使用 Style ='DiagonalLineUp'或'DiagonalLineDown',调整外观

DiagonalLineSpacing 和 LineStyle 属性。

通过设置 Enabled = False,断点无效。

PointLineSeries,AreaSeries 和 HighLowSeries 具有 ContinuousOverScaleBreak 属性。通过启用

它,将在间隙上形成连接线。

图 5-33。原始交易数据,周一至周五上午 10 点至下午 6 点。刻度断点未被应用。大部分时间范围内没有数

据,因为证券交易所已经关闭。很难看到重要的信息。 PointLineSeries 从收盘值跳转。

图 5-34。在非活跃交易时段内,适用刻度断点。更多屏幕空间可用于重要数据。 Style = Fill,Gap = 10.

PointLineSeries 从收盘值跳转,PointLineSeries.ContinuousOverScaleBreak = True。

图 5-35 。 在 非 活 跃 交 易 时 段 内 , 适 用 标 准 摊 位 。 Style = DiagonalLinesUp , Gap = 20.

PointLineSeries.ContinuousOverScaleBreak = True。

图 5-36。 PointLineSeries.ContinuousOverScaleBreak = False。线不会把间隙之间的前一个点和后一个点连接

起来。相反,如果没有定义刻度断点,它们将继续朝着原来的方向发展。

5.4 浏览 XY 序列,综述

浏览 XY 序列可让数据以不同的方法或形式达到可视化效果。所有的序列应在轴值范围之内。序列

必须在一个Y轴上。为了对X轴与Y 轴进行分配,序列具有AssignXAxisIndex与AssignYAxisIndex

属性。在代码中,您可以使用系列构造函数参数对 X 轴或 Y 轴进行分配。

5.5 点线序列

图 5-37 一些点线序列

一个点线序列可代表简单的直线、点(分散)或共同作为一个点线。通过在 PointLineSeries 列表中

新加 PointLineSeries 对象在表格中添加序列。

5.5.1 线条样式

使用 LineStyle 属性定义线条样式。如果您不想让线条可见,设置 LineVisible =

False。

5.5.2 点样式

为了使点可见,设置 PointsVisible = true 。通过设置 PointStyle 属性设置点的样式。在

PointStyle.Shape 的预定义样式中选择样式。其中有一种样式为 Bitmap,可在点定位中绘制任意位

图图片。使用 BitmapImage 属性对位图图片进行定义。使用 BitmapAlphaLevel 属性在位图图片上

设置透明度。通过定义除白色以外的 BitmapImageTintColor 来更改位图色调。在预定义的点样式当

中,像圆形、三角形、十字形等,您可以定义绘图颜色与填充样式。需要注意的是所有的颜色与填充

并不适用于所有的形状样式。可对点的宽度与高度进行设置,点也可旋转。

5.5.3 单独给点上色

从 7.2 版本起,PointLineSeries、FreeformPointLineSeries、AreaSeries、HighLowSeries 在数据

点结构中出现色场。为了使独立的点上色,将 IndividualPointColoring 设置为 Color1、Color2、

Color3 或 BorderColor。设置 IndividualPointColoring = Off,可禁用单个点上色。颜色的设置与

PointStyle 属性中的颜色相符。

图 5-38 上,IndividualPointColoring = Color1(纯色点)

中,IndividualPointColoring = BorderColor

下,IndividualPointColoring = Color2(Color1 = transparent,渐变色)

5.5.4 添加点数

您必须在代码中添加系列点。使用 AddPoints(SeriesPoint [],bool invalidate)方法将点添加到现

有点的末尾。

chart.ViewXY.PointLineSeries[0].AddPoints(pointsArray); //将点添加到末尾

一次设置整个系列数据,并覆盖旧点,直接分配新的点数组:

chart.ViewXY.PointLineSeries [0] .Points = pointsArray; //分配点数组

注意!PointLineSeries点X值必须按升序排列。如果您需要它们以其他方式订购,请改用

FreeformPointLineSeries。

例如,定义点[0] .X = 0,点[1] .X = 5,点[2] .X = 5,点[3] .X = 6有效。

但点[0] .X = 2,点[1] .X = 1,点[2] .X = 6,点[3] .X = 7不是PointLineSeries的有效值数组。

5.5.5 添加点,可供选择的方式

您还可以在X和Y值数组中添加点,这在许多应用程序中是更为方便的方法。

chart.ViewXY.PointLineSeries[0].AddPoints(xValuesArray,yValuesArray,false);

一次设置整个系列数据,并覆盖旧点,直接分配X及Y值数组

chart.ViewXY.PointLineSeries[0].SetValues(xValuesArray, yValuesArray);

5.6 样本数据系列

样本数据系列——用于固定间隔进度数据

快速渲染

只有Y值存储在SamplesSingle或SamplesDouble数组中

=>非常紧凑的内存占用

首次采样时间标志 样本间隔 = 1 / 取样频率

通过将SampleDataSeries对象添加到SampleDataSeries列表将该系列添加到图表。

图 5-39. 一些样本数据系列。

SampleDataSeries是您应用于显示采样信号数据(离散信号数据)的行系列。这通常用于实时DSP

应用。在视觉上,它类似于PointLineSeries,所以所有的线和点格式选项都适用。

SampleDataSeries具有固定的采样间隔,因此不需要保留内存来存储点X值。

注意!SampleDataSeries不会重新取样或缩小给定的数据。 所有给定的数据值都保留在

SamplesSingle或SamplesDouble数组中。LightningChart不会降低数据的质量,丢失数据的峰值或

精度。

5.6.1 Y 精度

SampleDataSeries支持单精度和双精度样本Y值。当保持内存尽可能低时,建议使用单精度值。使

用SampleFormat属性选择样本格式。

使用系列采样频率(1 /采样间隔)设置固定采样间隔。在样本开始的地方设置X值(时间戳),设

置FirstSampleTimeStamp属性。

5.6.2 增加点数

您必须以代码形式添加样本。使用 AddSamples 方法在已存样本的末尾中增添代码。比如:

chart.ViewXY.SampleDataSeries[0].AddSamples(samplesArray,false); //将样本增添在结尾处

想要同时设置全部的序列数据,重写旧样本,可以直接分配新的样本排列。

如果样本格式是单个浮点数

chart.ViewXY.SampleDataSeries[0].SamplesSingle = samplesSingleArray;

或者,如果样本格式是双个浮点数

chart.ViewXY.SampleDataSeries[0].SamplesDouble = samplesDoubleArray;

5.7 自由点线系列

自由点线系列- 专为制作随意数据而生

当点数计数任务量繁重时,是很难渲染的。

Freeform point line series 能够展示出一条线、点数的分布(散布),甚至是将二者结合在一条点线

中。通过增添 Freeform point line series 素材至 Freeform point line series

菜单中,能够将这一系列增添到图表中。Freeform point line series 能够实现从预设的点开始向任意

方向描画线点。所有的线和点的格式选项都来自 point line series 这一应用中。

图 5-40。 一个自由点线系列

即使正在使用 DropOldSeriesData,点数超出当前视图范围内,Freeform point line series 也不会自

动 消 除 。 想 要 在 实 时 监 测 中 自 动 去 除 旧 的 点 数 , 请 使 用 PointCountLimiter 。 设 置

PointCountLimitEnabled 值为 true,并且在 PointCountLimit 属性中设置限制即可。如果激活了

PointCountLimiter 后,在点数计数限制已经达到极限的情况下,点数数组将作为环形缓冲区运行。

您可以随时通过读取 OldestPointIndex 中的检索值,找到点数排列中最历史的点数。如果您需要读

取点数计数限制缓冲器中过的现有数据,请使用以下的方法:

•如果 OldestPointIndex 为 0,则从 Points [0]读取到 Points [PointCount-1]。

•如果 OldestPointIndex> 0,首先从 Points [OldestPointIndex]读取[PointsCountLimit-1]。然后,从

Points [0]读取至 Points [OldestPointIndex-1]。

要直接检索最后一个系列点,请使用 GetLastPoint()方法。

5.8 线系列高级线着色

线颜色可以根据数据值或其他外部逻辑进行更改。

5.8.1 基于 Y 值的线条着色和用量程调色板填充

通过启用 SampleDataSeries,PointLineSeries 或 FreeformPointLineSeries 的 UsePalette 属性,线

的 着 色 由 ValueRangePalette 属 性 应 用 。 ValueRangePalette 包 含 Y 值 和 颜 色 对 。

ValueRangePalette.Type 设置渐变或统一步骤调色板。

调色板着色也可以设置为 Y 轴线。启用 Y 轴的 UsePalette 属性,并在 PaletteSeries 属性中分配首

选系列。

图 5-41。在左侧,使用“渐变”调色板根据 Y 值对行进行着色。在右边,使用一个统一调色板。UsePalette 也

供 Y 轴使用。

图 5-42。梯度调色板着色为双极信号数据。 Y 轴的 UsePalette 被禁用。

5.8.2 使用 CustomLinePointColoringAndShaping 事件定制成型和着色

可以使用 CustomLinePointColoringAndShaping 事件自定义着色逻辑和坐标调整,即在进入图表的

渲染阶段之前调用

注意,当 LineStyle.Pattern = Solid 时,自定义着色可用。

图 5-43。 CustomLinePointColorAndShaping 事件处理程序用于通过特定的更改参考级别来转换颜色。

5.9 高低系列

高低系列将数据显示为高值和低值之间的填充区域。通过将 HighLowSeries 对象添加到

HighLowSeries 列表中,将该系列添加到图表。

图 5-44。一个高低的系列有一个标记。

5.9.1 填充,线和点样式

填充可以用 Fill 属性及其子属性设置。使用 LineStyleHigh 和 LineStyleLow 属性定义线条样式。如

果不希望高线可见,请分别设置 LineVisibleHigh = false 和 LineVisibleLow = false。使用

PointStyleHigh 和 PointStyleLow 属性定义点样式。如果不想显示点,请设置 PointsVisibleHigh =

false,PointsVisibleLow = false。有关线和点样式详细信息,请参见第 6.5.1 和 6.5.2 节。

当输入数据使得高值小于低值时,反向填充应用于该部分。使用 ReverseFill 属性编辑反向填充。

图 5-45。第四个数据项被反转:高值<低值。

5.9.2 限制

通过启用 UseLimits,系列显示超过上限和下限的不同固色。常规填充和反向填充仅适用于限制之间

的范围。

图 5-46。 UseLimits = true,ExceedLimit = 48000,DeceedLimit = 28000。

5.9.3 通过值范围调色板进行着色

通过启用 UsePalette,填充使用 ValueRangePalette 步骤。都支持均匀和渐变着色。

图 5-47。 UsePalette = True,ValueRangePalette 中定义的几个步骤。均匀着色。

5.9.4 添加数据

您必须在代码中添加数据值。数据必须以 X 值升序排列。

使用 AddValues(HighLowSeriesPoint [],bool invalidate)方法将数据值添加到 existingvalues 数

组的末尾。

HighLowSeriesPoint [] dataArray = new HighLowSeriesPoint [6];

dataArray [0] = new HighLowSeriesPoint(2004,37000,22000);

dataArray [1] = new HighLowSeriesPoint(2005,35000,27000);

dataArray [2] = new HighLowSeriesPoint(2006,47000,25000);

dataArray [3] = new HighLowSeriesPoint(2007,37000,49000);

dataArray [4] = new HighLowSeriesPoint(2008,40000,50000);

dataArray [5] = new HighLowSeriesPoint(2009,56000,56000);

//将数据添加到最后

chart.YyValue(dataArray,true);

要一次设置整个系列数据,并覆盖旧数据,直接分配新的数据数组:

//将数据分配给点数组

chart.ViewXY.HighLowSeries [0] .Points = dataArray;

5.10 区系列

区域系列将数据作为基准面和值之间的填充区域。通过将 AreaSeries 对象添加到 AreaSeries 列表中

将该系列添加到图表。区域系列与第 6.9 节中描述的 HighLowSeries 类似,但更简单。

图 5-48。两区系列。 BaseValue = 0。积分在这里只在第一个系列中可见。

使用BaseValue属性设置基础级别。使用填充属性设置首选填充样式。 Line Style可以设置LineStyle

属性。点样式可以通过 PointStyle 属性设置。可以像 HighLowSeries 一样使用超越和限制。

5.10.1 添加数据

您必须在代码中添加数据值。数据必须以 X 值升序排列。

使用 AddValues(HighLowSeriesPoint [],bool invalidate)方法将数据值添加到现有值数组的末尾。

AreaSeriesPoint [] dataArray = new AreaSeriesPoint [6];

dataArray [0] = new AreaSeriesPoint(2004,37000);

dataArray [1] = new AreaSeriesPoint(2005,35000);

dataArray [2] = new AreaSeriesPoint(2006,47000);

dataArray [3] = new AreaSeriesPoint(2007,37000);

dataArray [4] = new AreaSeriesPoint(2008,40000);

dataArray [5] = new AreaSeriesPoint(2009,56000);

//将数据添加到最后

chart.ViewXY.AreaSeries [0] .AddValues(dataArray,true);

要一次设置整个系列数据,并覆盖旧数据,直接分配新的数据数组:

//将数据分配给点数组

chart.ViewXY.AreaSeries [0] .Points = dataArray;

5.11 条形图

条形序列可使数据以横向条形图与纵向条形图的形式呈现。

图 5-49 条形图序列,横向、纵向

使用值数组属性存储条形序列的值。使用 AddValue(…)方法新增值。使用 SetValue(…)方法通过给

定的值指数更新现有值。值的类型为 BarSeriesValue,包含以下字段:

Value 条形图的长度

Location X 轴(垂直演示)或 Y 轴(水平演示)中条形图的位置

Text 条形图中出现的文本

使用条形序列的 LabelStyle 属性控制文本框值的标签在图表中的呈现方式。标签值文本由

AddValue(…)或 SetValue(…)方法参数进行设置。通过设置填充属性及其子属性可使用不同的填充

样式。

使用图标的 BarViewOptions 属性可以控制条形图的显示方式。BarView.Options.Orientation 在水

平与垂直条形图中选择方向。

BarViewOptions.Grouping 可通过值指数(指数选择合适的宽度)与位置值将条形图进行组合,分

组命令将不同的条形序列中的值以可视化的方式呈现在一起。如果您不想分组,可使用

BarViewOptions.Grouping.ByLocation,可为 BarSeriesValue 对象设置不同的位置字段。使用合

适的宽度属性调节列与其周围列之间的距离。若无合适的距离可用,条形序列的 BarThickness 属

性便会规定一个条形图宽度。通过设置 BarViewOptions.Stacking 群组可进行堆积或执行 Stack 或

StackStretchToSum。使用 StackStretchToSum 时,通过设置 StackSum 属性可定义目标总数。它

的默认值为 100,代表 100%。

图 5-50. Bars series Grouping = ByIndex, Stacking = None.

图 5-51. Bars series Grouping = ByIndex, Stacking = Stack.

图 5-52. Bars series Grouping = ByIndex, Stacking = StackStretchToSum. StackSum = 100.

5.12 股票序列

股票序列允许股票以烛状或股票条形状的形式交换数据。您可以在同一张图表中添加数个股票序

列,在 StockSeries 列表属性中添加数个 StockSeries 对象。使用 Style 属性选择样式。选项有:

Bars、CandleStick、OptimizedCandleStick。

图 5-53. StockSeries with Style = CandleStick. 浅蓝色的直线为背景中的 PointLineSeries,贯穿所有关闭值。

图 5-54. StockSeries with Style = Bars 直线序列用于显示线性回归拟合,抵消直线(2* 标准偏差)。带用于为

直线拟合选择一个时间区间。

使用 ColorStickDown、ColorStickUp、FillDown、FillUp 属性设置颜色与填充选项。使用

StickWidth 属性在像素中调整条形宽度。

为了实现最大渲染功能,使用柱状样式,设置 StickWidth = 1。使用烛状效果、

OptimizedCandleStick 样式达到最大程度的渲染效果。OptimizedCandleStick 的可用填充效果十

分有限。股票序列可在直线序列前设置渲染效果,设置 Behind = True。

5.12.1 给 StockSeries 数据设置

创建数据数组并设置数组项。每个项目都有字段:

日期 日期时间值(年,月,日)

打开 当天的开盘价

关闭 当天的关闭值

低 一天中的最低值

高 一天中的最高值

交易 总交易金额

容量 股票交易数

您应该按日期值(最早的日期优先)保持数据始终按升序排列。

// 创建数据组数

StockSeriesData[] data = new StockSeriesData[] {

new StockSeriesData(2010,09,01, 24.35, 24.76, 24.81, 23.82, 269210, 6610451.55),

new StockSeriesData(2010,09,02, 24.85, 24.66, 24.85, 24.53, 216395, 5356858.225),

new StockSeriesData(2010,09,03, 24.80, 24.84, 25.07,

24.60, 164583, 4084950.06),

new StockSeriesData(2010,09,06, 24.85, 25.01, 25.12,

24.84, 118367, 2950889.31)

};

// 将数据数组分配给系列

chart.ViewXY.StockSeries[0].DataPoints = data;

5.12.2 给日期显示设置 X 轴

chart.ViewXY.XAxes[0].ValueType = AxisValueType.DateTime;

chart.ViewXY.XAxes[0].LabelsAngle = 90;

chart.ViewXY.XAxes[0].LabelsTimeFormat =

System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat

.ShortDatePattern;

chart.ViewXY.XAxes[0].MajorDiv = 24 * 60 * 60; //major div is one day in seconds

chart.ViewXY.XAxes[0].AutoFormatLabels = false;

//Set datetime origin

chart.ViewXY.XAxes[0].DateOriginYear = data[0].Date.Year;

chart.ViewXY.XAxes[0].DateOriginMonth = data[0].Date.Month;

chart.ViewXY.XAxes[0].DateOriginDay = data[0].Date.Day;

设置适合数据的 X 轴范围:

// x 轴在两端延伸半天。使用第一个和最后一个日期值

chart.ViewXY.XAxes[0].SetRange(

chart.ViewXY.XAxes[0].DateTimeToAxisValue(data[0].Date) - 12 * 60 * 60,

chart.ViewXY.XAxes[0].DateTimeToAxisValue(data[data.Length - 1].Date) + 12 * 60 * 60);

5.12.3 自定义外观格式化

StockSeries 具有 CustomStockDataAppearance 事件处理程序,可单独用于格式化系列数据项的外

观,覆盖使用属性应用的通用填充和颜色样式。在事件处理程序中,您可以为特定点给出自己的宽度

和颜色。

图 5-55. CustomStockDataAppearance 用于突出具有较大宽度和鲜丽、渐变颜色的特定数据项。

5.12.4 应用尺度中断

切断非交易时段和日期,见 5.3.2。

5.13 PolygonSeries

PolygonSeries 通过给定的边界路径呈现填充和边界。

在填充属性中设置填充首选项。使用边框属性设置边框线样式。

图 5-56. 几个多边形。

5.13.1 给多边形设置数据

设置点属性中的路径点。PolygonSeries 具有自动路径关闭功能。如果不连接最后一点到第一点,图

表将自动执行。

此示例显示如何分配上一张图片的透明蓝绿色多边形路径:

polygon.Points = new PointDouble2D[] {

new PointDouble2D(7,12),

new PointDouble2D(6,9.5),

new PointDouble2D(7.5,5),

new PointDouble2D(10,6),

new PointDouble2D(9,11)};

5.13.2 激活复杂/相交的填充物

设置 IntersectionsAllowed 值为 True,可使多边形路径能够与其自身相互交叉。如果没有启用这个

属性,多边形路径没有与其自身相互交叉,则填充物会出现全部乱码。由于在交叉的条件下,交叉检

测和渲染任务量很重,因此出于性能的考虑,默认情况下的属性设定值为 False。

图 5-57。 具有交叉路径的多边形,IntersectionsAllowed 值为 True。

5.14 LineCollection

LineCollection 指的是线条节段的集合。每个线条的节段都是从点 A 至点 B 的一个完整线条。一个

LineCollection 能够包含成千上万个的线条节段。LineCollection 在渲染成千上万个清晰的线条节段

方面及其出色,与 PointLineSeries, FreeformPointLineSeries 和 SampleDataSeries 形成对比。

PointLineSeries, FreeformPointLineSeries 和 SampleDataSeries 在渲染由数百万个点组成的连续

不断的多线条上更有效率。

您能够通过使用 LineStyle 这一属性对线条的颜色、款式和宽度进行改变。在 Lines 属性中设置线条

部分即可。

在 ViewXY.LineCollections 菜单属性中增添 LineCollection 对象。

图 5-58。 三个 LineCollections 使用。 绿色作为非常快速的渲染条,黄色作为折线,红色作为任意三角形

线框网格。

5.14.1 在 LineCollection 中设置数据

包含了四个领域的线条节段结构,如下所示:

AX Start point, X

AY Start point, Y

BX End point, X

BY End point, Y

您能够按照以下格式将线条节段数列增添至线条属性中:

lineCollection.Lines = new SegmentLine[]{

new SegmentLine(6,25,8,30),

new SegmentLine(8,30,7,40),

new SegmentLine(7,40,10,40),

new SegmentLine(10,40,12,28) };

5.15 IntensityGridSeries

IntensityGridSeries 允许由分配的值范围调色板着色的 M x N 个节点数组可视化。

intensitygridseries 允许可视化的 M×N 个结点阵列,由指定值范围的调色板进行着色。节点之间

的颜色被内插。 IntensityGridSeries 是 X 和 Y 维度上均匀间隔的矩形系列。该系列还可以渲染轮

廓线,轮廓线标签和线框。

图 5-59。 IntensityGridSeries 属性。

图 5-60。 IntensityGrid 系列展示了热图演示。图例框显示值范围调色板。

数据存储在数据属性中,作为二维数组。每个数组的项目都是 IntensityPoint 类型。将每个节点的

数据值存储在 IntensityPoint 结构的 Value 字段中,该结果告诉您要从 ValueRangePalette 中使

用哪种颜色。

图 5-61。 IntensityGridSeries 节点。 SizeX = 5,SizeY = 7。

节点距离自动计算为

5.15.1 设置强度网格数据

- 使用 RangeMinX 和 RangeMaxX 属性设置 X 范围,以便在分配的 X 轴中订购最小值和最大值。

- 使用 RangeMinY 和 RangeMaxY 属性设置 Y 范围,以便在分配的 Y 轴中订购最小值和最大值。

- 设置 SizeX 和 SizeY 属性以给网格一个列和行的尺寸。

- 为每个节点设置值:

方法,具有数据数组索引

for(int nodeIndexX = 0; nodeIndexX <columnCount; nodeIndexX ++)

{

for(int nodeIndexY = 0; nodeIndexY <rowCount; nodeIndexY ++)

{

intensityValue = // some height value。

gridSeries.Data [iNodeX,iNodeY] .Value = intensityValue;

}

}

gridSeries.InvalidateData(); // Notify new values are ready and to refresh

替代方法, SetDataValue 用法

for(int nodeIndexX = 0; nodeIndexX <columnCount; nodeIndexX ++)

{

for(int nodeIndexY = 0; nodeIndexY <rowCount; nodeIndexY ++)

{

intensityValue = // some height value

gridSeries.SetDataValue(nodeIndexX,nodeIndexY,

0,// X 值与网格无关

0,// Y 值与网格无关

intensityValue,

Color.Green); // Source point colors are not used in this

example, so use any color here

}

}

gridSeries.InvalidateData(); // Notify new values are ready and to refresh

仅为现有网格设置值

当 IntensityMesh 的几何形状没有改变或者 IntensityGrid 系列的 SizeX 或 SizeY 不改变,数据正

在快速变化时,最有利的是使用 SetValuesData 方法。它接受 Double [ ] [ ]格式值。使用这种数

据阵列,滚动或重新排列行或列很快。特别是与 PixelRendering 属性(见 6.15.4)相结合,是高分

辨率滚动光谱图可视化的非常有效的方法。请注意,当使用 SetValuesData 设置的外部数据数组禁

用 PixelRendering 时,Data 属性不能为空。

仅为现有网格设置颜色

当 IntensityMesh 的几何形状没有改变或者 IntensityGrid 系列的 SizeX 或 SizeY 不改变时,数据

正在快速变化,最有利的是使用 SetColorsData 方法。它接受 int [ ] [ ]格式值,即 GPU 直接接受

的 ARGB 值。使用这种数据阵列,滚动或重新排列行或列很快。特别是与 PixelRendering 属性(参

见 6.15.4)相结合是高分辨率滚动光谱图可视化的非常有效的方法。请注意,当使用 SetColorsData

设置的外部数据数组禁用 PixelRendering 时,Data 属性不能为空。

5.15.2 从位图文件创建强度网格数据

您可以从位图图像创建曲面。使用 SetHeightDataFromBitmap 方法来实现。系列数据数组属性获

取位图的大小尺寸(如果不使用抗锯齿或重采样)。对于每个位图图像像素,红,绿,蓝三者值相加。

总和越大,该节点的数据值越大。黑色和深色获得较低的值,而亮色和白色则获得更高的值。

图 6-62。源位图和计算强度值数据。暗值保持不变,明亮的值得到更高的值。

5.15.3 填充样式

使用填充属性选择填充样式。以下选项可用

• 无填充:使用该项,不应用填充。这是您可能想要使用线框网格或平面轮廓线的选择。

• FromSurfacePoints:使用 Data 属性节点的颜色。

• Toned:适用 ToneColor

• 参见:第 5.15.4 节。

启用 FullInterpolation 属性以在填充中使用增强插值方法。请注意,这将导致更多的 CPU 和 GPU

开销。通过使用全插值,填充质量更好,但只有当数据数组大小相当小时,才能看到。

5.15.4 作为像素图渲染

通过启用 PixelRendering 属性,节点将呈现为像素或矩形。这是一种非常高性能的渲染风格,例如

用于实时高分辨率热成像应用。请注意,当选择此渲染模式时,将禁用许多其他选项,例如轮廓线,

线框和插值。如果使用对数轴,则对数变换仅应用于该系列的角,位图中的像素保持均匀间隔,并且

不应用对数变换。

图 5-5。 ContourLineType = ColorLine。

5.15.5 ValueRangePalette

使用 ValueRangePalette 属性,您可以为值着色定义颜色步骤。 ValueRangePalette 可用于

• 填写(见 5.15.3 节)

• 线框(见第 5.15.6 节)

• 轮廓线(见第 0 节)

对于轮廓调色板,您可以定义几个步骤。每个步骤都有一个高度值和相应的颜色。

注意:20 个步骤被预编译和快速加载。对于更高的数值,初始化图表时可以预期几秒的延迟。

图 5-63。在左侧,IntensityGridSeries 填充设置为 Paletted,调色板 Type 设置为渐变。在右侧,调色板类型

设置为均匀。

调色板由 MinValue,Type 和 Steps 属性定义。对于类型,有两个选择:均匀和渐变。前面图形的

轮廓调色板(注意图例框):

- MinValue:-50

- 类型:均匀

- 步骤:

• 步骤[0]:MaxValue:-10,颜色:蓝色

• 步骤[1]:MaxValue:10,颜色:深青色

• 步骤[2]:MaxValue:25,颜色:绿色

• 步骤[3]:MaxValue:35,颜色:黄色

• 步骤[4]:MaxValue:60,颜色:红色

• 步骤[5]:MaxValue:100,颜色:白色

第一步值之后的值用第一步的颜色着色。

5.15.6 线框

使用 WireframeType 选择线框样式。选项是:

• 无:无线框

• 有线框:纯色线框。使用 WireframeLineStyle.Color 设置颜色

• WireframePaletted:线框着色遵循 ValueRangePalette(参见第 6.15.4 节)

• WireframeSourcePointColored:线框着色遵循网格节点的颜色

• 点:在网格节点位置绘制纯色点

• DotsPaletted:点在网格节点位置绘制,并由 ValueRangePalette 着色

• DotsSourcePointColored:点在网格节点位置绘制,着色遵循网格节点的颜色

线框线条样式(颜色,宽度,花样)可以使用 WireframeLineStyle 进行编辑。

注意!仅当 WireframeLineStyle.Width = 1 和 WireframeLineStyle.Pattern = Solid 时,调色

板彩色线框线和点可用。

5.15.7 等高线

轮廓线可以与填充和线框结合使用。通过设置 ContourLineType 属性,可以使用不同的样式绘制

轮廓线:

- 无:没有显示轮廓线

- FastColorZones:这些线条在调色板步骤作为薄区域绘制。非常强大的渲染,适合持续更新或动

画表面。陡度值变化显示为细线,轻度倾斜的高度差异显示为厚区域。所有行都使用与

ContourLineStyle.Color 属性定义的相同颜色。区域宽度可以通过 FastContourZoneRange 属

性设置。该值在 Y 轴范围内。

- FastPalettedZones:像 FastColorZones,但线着色遵循 ValueRangePalette 选项(见第 6.15.4

节)

- ColorLine:像 FastColorZones 一样,但轮廓线是用实线制作的。渲染需要更长时间,不推荐用

于持续更新或动画的表面。线宽可以使用 ContourLineStyle.Width 属性进行调整。

- PalettedLine:像 ColorLine,但线着色遵循 ValueRangePalette 选项。

图 5-5。 ContourLineType = FastColorZones。图 5-5。 ContourLineType = FastPalettedZones。

图 5-5。 ContourLineType = ColorLine.。图 5-5。 ContourLineType = PalettedLine。

5.15.8 轮廓线标签

当显示轮廓线时,可以在线路中显示数值。

图 5-5。 ContourLineLabels.Visible = true。

使用 LabelsNumberFormat 设置小数位数或其他自定义格式化字符串。

5.16 IntensityMeshSeries

IntensityMeshSeries 几乎类似于 IntensityGridSeries。最大的不同之处在于,系列节点可以在 X-

Y 空间中任意定位。该系列不一定是长方形。线框线可以通过 WireframeType 属性设置为可见,

并且可以通过将 ShowNodes 设置为 true 来显示节点。

图5-64。 IntensityMeshSeries具有每个节点自由定位的X和Y值。 WireframeType = Wireframe和ShowNodes

= true。

图 5-65。强度网格节点。 SizeX = 4,SizeY = 4。

5.16.1 几何变化时,设置强度网格数据

当 X,Y 和 Value 字段在同一时间更新时,请按照以下说明进行操作。

- 设置 SizeX 和 SizeY 属性来给网格的列和行设置大小。

-为所有节点设置 X,Y 和 Y 值:

方法,具有数据数组索引

for(int nodeIndexX = 0; nodeIndexX <columnCount; nodeIndexX ++)

{

for(int nodeIndexY = 0; nodeIndexY <rowCount; nodeIndexY ++)

{

meshSeries.Data [nodeIndexX,nodeIndexY] .X = xValue;

meshSeries.Data [nodeIndexX,nodeIndexY] .Y = yValue;

meshSeries.Data [nodeIndexX,nodeIndexY] .Value = value;

}

}

meshSeries.InvalidateData(); // Notify new values are ready to refresh

替代方法,SetDataValue 的用法

for(int nodeIndexX = 0; nodeIndexX <columnCount; nodeIndexX ++)

{

for(int nodeIndexY = 0; nodeIndexY <rowCount; nodeIndexY ++)

{

meshSeries.SetDataValue(nodeIndexX,nodeIndexY,

xValue,

yValue,

value,

Color.Green); //Source point colors are not used in this

example, so use any color here

}

}

meshSeries.InvalidateData(); //Notify new values are ready to refresh

5.16.2 几何不改变时,设置网格数据强度

当只更新 Data Array IntensityPoint 结构的 Value 字段时,请遵循以下说明。这是用于更新数据

的性能优化方法,例如在热成像或环境数据监控解决方案中,其中每个节点的 X 和 Y 值保持在同一

位置。

创建系列和几何

- Set Optimization to DynamicValuesData

- Set SizeX and SizeY properties to give the mesh a size as columns and rows.

- Set X, Y and Y values for all nodes:

for (int nodeIndexX = 0; nodeIndexX < columnCount; nodeIndexX ++)

{

for (int nodeIndexY = 0; nodeIndexY < rowCount; nodeIndexY ++)

{

meshSeries.Data[nodeIndexX, nodeIndexY].X = xValue;

meshSeries.Data[nodeIndexX, nodeIndexY].Y = yValue;

meshSeries.Data[nodeIndexX, nodeIndexY].Value = value;

}

}

meshSeries.InvalidateData(); //Rebuild geometry from nodes and repaint

定期更新值

- Set only values for all nodes:

for (int nodeIndexX = 0; nodeIndexX < columnCount; nodeIndexX ++)

{

for (int nodeIndexY = 0; nodeIndexY < rowCount; nodeIndexY ++)

{

meshSeries.Data[nodeIndexX, nodeIndexY].Value = value;

}

}

meshSeries.InvalidateValuesDataOnly(); //Only data values are updated

5.17 带

实际上,带可以被认为是系列的,也可以认为不是系列的。所有用户界面动作与其他系列一样,但一

个带系列只包含一个带。带是一个垂直或水平区域,从一个边缘到另一个边缘。带可以绑定到 Y 轴

或 X 轴,使用 Binding 属性来控制。如果带绑定到 Y 轴,您还必须设置 AssignYAxisIndex 属性。

如果系列绑定到 X 轴,则可以忽略 AssignYAxisIndex 属性,或将其设置为未分配(-1)。

图 5-66。一系列带系列的乐队

如果你想要带在线条和条系列后面,设置 Behind 属性为 true。带边缘由 ValueBegin 和 ValueEnd

属性设置,它们是轴线的值。带可以用鼠标拖动到另一个位置。通过从边缘拖动来调整频带大小,从

而更新拖动的边缘值 ValueBegin 或 ValueEnd。

5.18 恒定线

像带一样,恒定线可以被认为是串联的,也可以认为不是串联的。恒定线与 Y 轴绑定,它代表一条

水平线,从图形左边缘到右边缘。在 Value 属性中设置级别。通过鼠标拖动可以垂直移动恒定线。

通过将 Behind 属性设置为 true,将常数线绘制在线条和条形序列之后,否则绘制在它们的前面。

图 5-67 正弦线系列周围的一些恒定线。

5.19 注释

注释允许您在图表区域的任何位置显示鼠标交互式文本标签或图形。注释可以通过移动鼠标,调整

大小,旋转,其目标和位置也可以被改变等。或者,它们可以通过代码来控制。当自定义图形必须在

屏幕上呈现时,注释也非常好,因为它们可以以不同的样式和形状呈现。在 ViewXY.Annotations

集合中创建 AnnotationXY 对象。

图 5-68 具有各种样式的 AnnotationXY 对象,放置在线系列上。使用 Style 属性选择形状。

通过单击注释,它进入鼠标交互式编辑状态,您可以在其中调整注释位置,箭头指向的位置,调整其大小

并旋转它。

图 5-69 点击注释进入编辑状态。单击另一个注释或图形背景以保留编辑状态。

5.19.1 控制目标和位置

目标是箭头的终点,箭头或标注提示指向的点。目标可以在轴值或屏幕坐标中设置。使用

TargetCoordinateSystem 在 AxisValues 或 ScreenCoordinates 之间进行选择。当选择

AxisValues 时,TargetAxisValues 属性设置箭头线指向的位置(箭头线的结尾)。使用

TargetScreenCoords 将其设置为屏幕坐标。

位置是箭头的起始点,可以通过屏幕坐标,轴值或与 Target 的相对偏移来设置。使用

LocationCoordinateSystem 选 择 和 LocationScreenCoords , LocationAxisValues 或

LocationRelativeOffset 以通过所选方法控制位置。位置也是文本区域旋转的中心点。

Anchor 属性控制文本区域如何放置在位置。通过设置 Anchor.X = 0.5 和 Anchor.Y = 0.5,箭头

的开头在中间。当设置 Anchor .X 0.1 和 Anchor.Y = 0.25 时,箭头开始靠近左上角,如下图所示:

图 5-70 解释锚点值。 Current Anchor.X = 0.1,Anchor.Y = 0.25。当锚点值在 0 ... 1 之间时,箭头起始点在

文本区域内。

6.19.2 使用鼠标移动,旋转和调整大小

图 5-71 注释鼠标交互节点。

从 Target 拖动,移动箭头的末尾。从文本区域拖动以设置新位置。通过从圆形位置/锚点节点拖动,

您可以同时调整锚点和位置,将文本框保持在同一个位置。

从 X 或 Y 调整大小节点拖动时按住 Shift 键,使用对称操作,两边同时进行调整。通过在从角度调

整大小节点(X + Y)拖动的同时按住 Shift 键,可使宽高比保持调整大小。在旋转操作中,Shift 键

将旋转角度锁定到 15 度的最接近的倍数。

5.19.3 调整外观

设置“Style”属性,选择注释外观,选项包括:矩形、矩形箭头、圆角矩形、圆角矩形箭头、箭头、

插图编号、圆角插图编号、椭圆、椭圆箭头、三角与三角箭头。

在 ArrowLineStyle 中的样式中选择箭头,使用 ArrowStyleBegin 与 ArrowStyleEnd 控制箭头的外

观。针对箭头尾部样式,有多种选项:None、Square、Arrow、Circle、Caliper。使用 Fill 修改注

释的填充。在 NibStyle 中,您可以更改编辑状态鼠标交互结点的外观。在文本区域内,TextStyle 可

控制字体设置与文本对齐。BorderLineStyle 与 CornerRoundRadius 可控制边界线的外观。

5.19.4 尺寸设置

尺寸属性可控制注释文本框的尺寸:

根据内容自动自动调整尺寸,在边框处留出 AutoSizePadding 空间。

AxisValuesBoundaries 允许通过轴值设置注释的尺寸,使用 AxisValuesBoundaries.Xmin、XMax、

YMin、YMax 对其进行定义。

ScreenCoordinates 可使您通过屏幕坐标来设置尺寸,使用 SizeScreenCoords.Height 与 Width。

5.19.5 保持文本区域可见

KeepVisible 启用时,注释文本区域必须在图表当中。无法使用鼠标或代码将注释移出图表之外。当

您 PAN 图形视图或调整轴时,注释的位置会发生变化,在图表中显示。

5.19.6 在轴上显示注释

设置 RenderBehindAxis = True,注释在轴上显示。所有剪裁与 Z 排序特性在 这种情况下是不可行

的。

5.19.7 在图表中进行剪裁

ClipInsideGraph 启用时,注释可在图表中进行剪裁。ClipInsideGraph 禁用时,在图表的边缘注释

可 进 行 渲 染 。 启 用 ClipWhenSweeping 时 , 注 释 不 会 在 彻 底 空 白 的 区 域 内 显 示 。 确 保

RenderBehindAxis 设置为 True,之后可使用 ClipInsideGraph 属性进行应用。

5.19.8 控制 Z 顺序

将 Behind 设置为默认值或 False,注释会在序列上方出现。若将其设置为 True,会在序列之前进行

渲染。注释会以其在 Annotations 列表中的顺序显示,同时将 Behind 过滤器作为主控器。Annotations

Z 顺序可使用注释的 ChangeOrder 方法实现快速更改,比如在鼠标事件处理程序中。命令更改选项

有:

BringToFront:注释总是在最前方

SendToBack:置后

MoveBack:向后移动一步

MoveFront:向前移动一步

5.19.9 LayerGrouping 功能优化

当可视化文档中有上百个注释时,文本渲染开始的延迟起到举足轻重的作用。默认值时,文档是以 Z

顺序来进行渲染的,文档与注释紧密结合。设置 LayerGrouping = True,性能可得到改善,图表只

会使用两个平面注释文本层。一个注释的 Behind 设置为 True,另一个注释的 Behind 设置为 False。

这样大幅提升了性能。另一方面,如果注释与其它注释出现重叠,文本会出现错误的渲染。

图 5-72 左侧 LayerGrouping = False

右侧 LayerGrouping = True 文本的 Z 顺序丢失

当 Style = Arrow 或设置注释填充为不可见时,Z 顺序的限制便不会显现。

5.19.10 在轴值与屏幕坐标间进行转换

在某些情况下,您可能想在混合配置中定义 Location 或 Target。屏幕坐标中的 X 与轴值中的 Y,反

之也可。轴线中的 ValueToCoord 方法可将轴值转换为屏幕坐标。CoordToValue 可将屏幕坐标转换

为轴值。

5.20 示例对话框

从 v.8 版本开始,ViewXY 支持在同一图表中支持多种示例对话框。在 ViewXY 中插入示例

图 5-73 Extensive LegendBoxXY 属性树。

5.20.1 在示例对话框中隐藏/显示某个序列

图 5-74 示例对话框显示序列标题和图标。年可以通过取消选定序列复选框来隐藏某一序列。

5.20.2 防止序列在示例对话框中自行列出

如果不想在示例对话框中列出某一特定序列,您可以设置序列。为特定序列设置 ShowInLegendBox

= False。

5.20.3 在示例对话框中选择要显示的特定序列

使用 series.LegendBoxIndex 选择首选的示例对话框。某一序列只能在一个示例对话框中显示。将所

有序列的默认索引设为 0.

5.20.4 隐藏复选框

设置 ShowCheckBoxes = False,可隐藏复选框。

5.20.5 隐藏图标

设置 ShowIcons = False,可隐藏图标。

5.20.6 控制位置

示例对话框在行段或页边空白边进行左对齐、上对齐、右对齐、下对齐。应用 Position 属性控制位

置。Position 选项有:TopCenter、TopLeft、TopRight、LeftCenter、

RightCenter、BottomLeft、BottomCenter、BottomRight、Manual。分段式控制有 SegmentTopLeft、

SegmentTopCenter 、 SegmentTopRight 、 SegmentBottomLeft 、 SegmentBottomCenter 、

SegmentBottomRight、SegmentLeftMarginCenter、SegmentRightMarginCenter。通过来自 Position

属性决定的位置所给定的数量,Offset 属性可转移位置。

5.20.7 在行段间为示例对话框配置空格

设置 ViewXY.AutoSpaceLegendBoxes = True,行段间的多余空间会被分配以适应它们中的示例对

话框。

图 5-75 Position = SegmentBottomRight AutoSpaceLegendBoxes = False

图 5-76 Position = SegmentBottomRight AutoSpaceLegendBoxes = True

请注意,段落间 ViewXY.AxisLayout.SegmentsGap 也会进行配置。

5.20.8 在段落对话框中将示例对话框对齐

在指定段落附近将示例对话框进行对齐,设置 AlignmentInSegmentGap = Near。在段落间隔中心进

行垂直对齐,设置 AlignmentInSegmentGap = Center。

5.20.9 在图表段落中选择显示示例文本框的位置

使用 SegmentIndex 可以控制段落中显示示例文本框的位置。它只适用于以段落为基础的 Position

选项。

5.20.10 改变示例对话框的的尺寸、移动示例对话框

示例对话框支持改变尺寸与滚动条。拖动边缘修改尺寸。

请注意移动或改变示例对话框尺寸时,将 Position 设置为 Manual,Offset 属性已经升级,可反映出

新位置。将 Position 设置为非 Manual 的返回选项。

5.21 缩放与平移

使用 ZoomPanOptions 属性可控制缩放与筛选设置。

图 5-77 ZoomPanOptions 属性与子属性

可用鼠标左键与右键执行缩放与筛选,按键可进行配置。使用鼠标滚轮可进行缩放。

5.21.1 使用触屏进行缩放

将两根手指放在图表上,捏住手指合拢是缩小,扩大是放大。若您在进行水平缩放或垂直缩放,或同

时 执 行 这 两 种 操 作 , 图 表 会 进 行 检 测 。 这 种 特 性 称 为 “ zooming with rails ”, 可 通 过

MultiTouchZoomDirection(Free/XAxis/YAxis/Rails)进行控制。

在 X 轴 、 Y 轴 或 其 标 签 上 抓 紧 / 放 开 手 指 , 可 将 缩 放 只 应 用 于 对 特 定 的 轴 。 设 置

MultiTouchZoomingEnabled = false,可禁用触屏缩放。

5.21.2 使用触屏进行筛选

将两根手指放到屏幕之上,以相同的速度滑动,筛选视图。

有些系统支持用惯性进行筛选,因此您可以在屏幕上方动一动手指,视图会不断筛选,然后速度下降

直至停止。将手指放在 X 轴、Y 轴或其标签上,滑动手指,筛选会只应用于特定的轴。

5.21.3 鼠标左键动作

将 LeftMouseButtonAction 设置为 Zoom,使用鼠标左键启用缩放。将 LeftMouseButtonAction 设

置为 Pan,可启用筛选。将 LeftMouseButtonAction 设置为 None 可禁用缩放与筛选。

5.21.4 鼠标右键动作

将 RightMouseButtonAction 设置为 Zoom,可用鼠标右键启用缩放。将其设置为 Pan,可启用筛选。

若将其设置为 None,可用鼠标右键禁用缩放与筛选。

5.21.5 RightToLeftZoomAction

RightToLeftZoomAction LeftMouseButtonAction 或 RightMouseButtonAction 设置为 Zoom

时,RightToLeftZoomAction 可进行应用。鼠标缩放从右至左时 RightToLeftZoomAction 可详细解

释所发生的动作(mouse X button down-coordinate > button up-coordinate)。

以下选择可用:

FitView:匹配所有 X 轴与 Y 轴,使属于其中的序列数据显示出来。设置 ViewFitYMarginPixels 为

大于 0 的值,轴会缩放,因此在像素中为空的数据在 Y 轴的最小端与最大端中留出空间。

RectangleZoomIn:使用矩形进行缩放,与从左至右缩放类似。

ZoomOut:使用 ZoomFactor 执行缩小。

RevertAxisRanges:将轴值设置为特定值,也就是说,在已经进行缩放或修改轴范围后,可恢复原始

视图。在每一个轴上,有 RangeRevertEnabled 属性,如果轴幅度被恢复,可进行控制。从右向左拖

拽鼠标时,释放鼠标键,在启用状态下,RangeRevertMinimum 与 RangeRevertMaximum 属性会

应用在轴当中,见 5. 2.5。

PopFromZoomStack:设置上次缩放时使用的同一轴幅度,例如,回到上一级缩放。

5.21.6 使用鼠标按钮进行缩放

通过单击鼠标进行缩小、放大

使用 ZoomFactor 属性可控制缩放的程度。若果您想使用负缩放效果,将值设为反值(1/因数)。使用

鼠标光标位置作为缩放中心点进行缩放。

X 维缩放:

用图表控制聚焦,按下 Shift 键。Zoom X 光标出现。单击配置鼠标键实现放大,另一个按键实现缩

小。

Y 维缩放:

用图表控制聚焦,按下 Ctrl 键。Zoom Y 光标出现。单击配置鼠标按钮实现放大,另一个按键实现

缩小。使用堆积 YAxisLayout 时,缩放功能会应用至所有图表段落(Y 轴)。按下 Ctrl 与 Alt 键,

鼠标单击结束时,Y 维缩放只会应用至图表段落中。

您可以同时按下 Shift 与 Ctrl(+Alt)键,同时对 X 维与 Y 维进行缩放。

矩形放大

使用配置鼠标按钮,在缩放范围内从左上角至右下角拖拽矩形。对 X 维与 Y 维都有效。如果对

YAxesLayout 进行堆积设置,只有在 X 维上的视图会被缩放。可通过 RectangleZoomDirection 属

性选择维度。

缩放矩形边框与填充样式可使用 ZoomRectFill 与 ZoomRectLine 属性进行修改。

配置缩小矩形

当 RightToLeftZoomAction 设置为 FitView、ZoomOut、RevertAxisRanges 或 PopFromZoomStack

时,缩小矩形会才缩放时出现。使用 ZoomOutRecFill 设置填充,使用 ZoomOutRectLine 设置线条

样式。

5.21.7 使用鼠标滚轮进行缩放

启用 MouseWheelZooming 时,将鼠标滚轮向上滚动实现放大功能;向下滚动实现缩小功能。鼠标

的光标位置是缩放中心。使用 ZoomFactor 可调节鼠标滚轮的缩放强度。按住 Shift 键,缩放功能只

对 X 维应用。按住 Ctrl 键,缩放功能只对 Y 维应用。请注意,当 ScrollMode 设置为 Sweeping 时,

缩放功能不可用。

5.21.8 在轴上使用鼠标进行缩放与筛选

使用 AxisMouseWheelAction,可对鼠标滚轮置于轴上时实现的功能进行设置。

None:鼠标滚轮无任何功能

Zoom:对鼠标所在的轴进行缩放

Pan: 对鼠标所在的轴进行筛选

ZoomAll:若鼠标经过 X 轴,缩放所有的 X 轴;若鼠标经过 Y 轴,缩放所有的 Y 轴。请注意,只有

当 YAxisLayout = Layered 时,可对其它轴应用此功能。

PanAll: 若鼠标经过 X 轴,筛选所有的 X 轴;若鼠标经过 Y 轴,筛选所有的 Y 轴。请注意,只有

当 YAxisLayout = Layered 时,可对其它轴应用此功能。

5.21.9 使用鼠标按钮进行筛选

将 LeftMouseButtonAction 或 RightMouseButtonAction 设置为 Pan 可进行筛选。按住已设置的鼠

标按钮,拖动图表区域。松开按钮即可停止筛选。若 PanDirection 设置为 Both,通过被拖拽的数量

可在 X 轴与 Y 轴筛选滚动。PanDirection Vertical 设置仅针对 Y 轴,PanDirection Horizontal 仅针

对 X 轴。筛选产生效果前,使用 MousePanThreshold 在像素中给出公差。如果使用针对图表控件而

配置的 ContextMenuStrip 控件,在筛选结束时,阻止其每次打开,这种方法十分方便。

5.21.10 启用/禁用 Ctrl、Shift、Alt

缩放操作支持修改键,设置为默认值时可启用。设置 AltEnabled = False、 CtrlEnabled = False 或

ShiftEnabled = False 可禁用此项功能。

5.21.11 使用代码进行放大/缩小

用中心点与缩放系数,用 ZoomByFactor(…)方法进行缩放。用 Zoom(…)方式以矩形进行缩放。

FitView()方法符合“Zoom to fit”操作。

5.21.12 使用代码对轴进行缩放

设置 X 轴或 Y 轴 Minimum 与 Maximum 属性的值。用 SetRange(…)可对它们同时进行设置。

5.21.13 可配置原点的矩形缩放

启用 RectangleZoomAboutOrigin,矩形放大或缩小可在 X 轴与 Y 轴 ZoomOrigin 设置中进行对

称应用。

图 5-78 ZoomPanOptions.RectangleZoomAboutOrigin 启用

ViewXY.XAxes[0].ZoomOrigin = 50 ViewXY.YAxes[0].ZoomOrigin = 50.

5.21.14 使用相同的单位连接 Y 轴缩放

启用 RectangleZoomLinkYAxes,所有的 Y 轴会有相同的 Units。文本字符串与矩形缩放下的轴具

有相同 Y 轴范围。

图 5-79 5 个 Y 轴的堆栈视图 当矩形缩放在图表段落上应用时,图表段落中的 Y 轴会被缩放,新的 Y 轴

范围会被复制到所有具有相同 Units.Text 的 Y 轴上。

5.21.15 自动 Y fit

使用 AutoYFit 属性控制自动 Y 轴调整。自动 Y fit 可应用于调整 Y 轴幅度以可见的 X 轴幅度显示

图表中的所有数据。AutoYFit 特别适用于进行实时监控。Fit 应用于时间间隔,使用 UpdateInterval

以毫秒为单位设置间隔。使用 MarginPercents 为轴设置额外范围。启用 Through,fitting 分析是针

对所有数据的,但可能会引起临界系统性能的管理费用。禁用时,只有少部分的最新数据会应用于

fitting 分析当中,在某些应用程序中可能会引起不当行为。

5.21.16 纵横比

AspectRatioOptions.AspectRatio 控制 X/Y(或地图上的经度/纬度)比值。

将 AspectRatioOptions.AspectRatio 设置为 Off,可允许 X 轴与 Y 轴单独进行设置。将纵横比设置

为 Manual,使用 ManualAspectRatioWH 属性设置首选比率。缩放操作会遵照纵横比的设置。

AspectRatio 未设置成 Off 时,axis scaling nibs 不可用。

地图 (见 5.24)AspectRatio = AutoLatitude 是很非常有用的选项。

AutoLatitude 以动态的形式更改横纵比。正如您在地图上不同地点所看到的一样。横纵比是由视图

的中心点来决定的。

5.21.17 在缩放与筛选操作中排除特定的 X 轴或 Y 轴

设置 axis.ZoomingEnabled = False,可将特定的 X 轴或 Y 轴从缩放操作中排除。

设置 axis.PanningEnabled = False,可将特定的 X 轴或 Y 轴从筛选操作中排除。

5.22 NaN 或其他值的 DataBreaking

图 5-80 DataBreaking 系列支持选项。

这些系列类型支持数据中断:

• PointLineSeries

• FreeformPointLineSeries

• SampleDataSeries

• AreaSeries

• HighLowSeries

• PointLineSeries3D

LightningChart 跳过与指定的破坏值匹配的数据点的渲染。正常呈现的所有其他值。

图 5-81 DataBreaking 用于 PointLineSeries、SampleDataSeries、AreaSeries 和 HighLowSeries。

注意!当DataBreaking.Enabled = True时,会产生大量的额外开销,不推荐用于需要非常高的实时

数据速率的解决方案。考虑使用ClipAreas,请参见第5.23节。

例如,使用NaN来中断PointLineSeries数据:

代码:

int pointCount = 101;

double[] xValues = new double[pointCount];

double[] yValues = new double[pointCount];

for (int point = 0; point < pointCount; point++)

{

xValues[point] = (double)point * interval;

yValues[point] = 30.0 + 5.0 *Math.Sin((double)point / 20.0);

}

//在Y数组中添加一些NaN值来标记断点

yValues[40] = double.NaN;

yValues[70] = double.NaN;

yValues[71] = double.NaN;

yValues[72] = double.NaN;

yValues[73] = double.NaN;

yValues[90] = double.NaN;

yValues[91] = double.NaN;

//添加带有DataBreaking启用的新系列

PointLineSeries pls = new PointLineSeries(_chart.ViewXY, _chart.ViewXY.XAxes[0],

_chart.ViewXY.YAxes[0]);

pls.DataBreaking.Enabled = true;

// set data gap defining value (default = NaN)

pls.DataBreaking.Value = double.NaN;

SeriesPoint[] points = new SeriesPoint[pointCount];

for (int point = 0; point < pointCount; point++)

{

points[point].X = xValues[point];

points[point].Y = yValues[point];

}

//Assign the data for the point line series

pls.Points = points;

//将创建的点线系列添加到 PointLineSeries 列表中

_chart.ViewXY.PointLineSeries.Add(pls);

5.23 ClipAreas

像DataBreaking(见6.22)一样,ClipAreas可以用来防止部分系列数据的渲染。它们可用于过滤掉

不良数据范围,超范围数据Y等等。

ViewXY的系列具有SetClipAreas方法来设置或更新裁剪区域。 它接受一系列的ClipArea结构。

ClipAreas阵列可以频繁更改,并且性能可以保持良好,高达数千个ClipAreas。

ClipArea适用于分配给它的系列。注意,这是一个渲染阶段剪辑,当鼠标放置在ClipArea上时,如果

其下有实际数据,鼠标操作将响应系列。

图 5-82 对 3 个系列定义的 ClipAreas。对 PointLineSeries、AreaSeries 和 IntensityGridSeries。

在左侧,ClipAreas 不被使用。 在右侧,ClipAreas 启用。对于黄色 PointLineSeries,已经定义了 X 维裁剪

区域来屏蔽低幅度数据。对于红色区域系列,Y 维 ClipArea 从顶部切割太高振幅的数据。对于

IntensityGridSeries,X 维和 Y 维 ClipAreas 用于防止系列在特定区域中呈现。

使用 ClipAreas 是一种性能智能优先的方法,将线路分解成多个数据段,而不是在实时监控期间产

生数百个单独的系列,或使用 DataBreaking 功能。

5.24 地图

使用地图属性及其子属性显示地理图。LightningChart地图有两种不同的类别:矢量地图和瓦片地图。

地图用所谓的等量矩形投影显示。

图5-83 世界的等量矩形投影。X范围为-180〜180度(180W〜180E),Y范围为-90〜90度(90S〜90N)。

极地区在这个投影中得到很大的拉伸.

该投影允许使用LightningChart的系列类型和其他几乎与X和Y轴绑定的对象,与地图同时使用。

5.25 矢量地图

地理矢量数据存储在LightningChart地图文件中,扩展名为.md。LightningChart提供了一组地图文

件。

X轴用于经度,Y轴用于纬度。有关显示地图坐标轴的信息请参见6.2.3节。地图坐标为十进制度,

纬度原点在赤道,经度原点在英国的格林威治。

图5-84地图属性和子属性。整个树用于矢量地图,除了用于瓦片地图的TileLayers集合和TileCacheFolder。

5.25.1 选择动态地图

将目录名称设置为 Path 属性,其中映射文件存在。使用 LightningChart 交付的地图,可以使用 Type

属性选择动态地图。要使用您自己的地图文件,请设置 FileName 属性。

如果不想使用任何地图,设置 Type 为关。

图 5-85 地图类型选项。显示与 LightningChart 交付的地图。 类型名称后缀描述地图的粗略细节级别。

LightningChart 的地图一般都由非常高的细节级别制作。对于实时监控解决方案,重要的是选择一

个给出适当细节和性能水平的地图。

5.25.2 长宽比

ViewXY.ZoomPanOptions.AspectRatioOptions.AspectRatio 控制 X / Y(或经度/纬度)比。

将其设置为关以通过拉伸地图分别设置 X 和 Y 轴范围设置。当您在不同的位置查看地图时,

AutoLatitude 将动态更改宽高比。宽高比由视图的中心点决定。通过将宽高比设置为手动,使用

ManualAspectRatioWH 属性设置首选比例。

5.25.3 图层及其外观设置

每个地图文件可以包含多个图层。 例如,路域、湖泊、河流、道路和城市图层。图层及其数据可从

Layers 数组属性访问。

图 5-86 在属性编辑器中打开的图层详细信息。

每个层都有一个特定的类型。可以使用相应的选项属性更改图层外观选项。使用 LandOptions 修改

路域外观、湖泊的湖泊选项、河流的河流选项,道路的道路选项,城市的城市选项选择,以及未指定

层类型的其他选项。

图 5-87 默认土地选项以及欧洲的相应视图。

图 5-88 修改的土地选项。

为每个图层项设置单个填充和边框样式

可以单独设置每个地图元素填充或边框外观。将BorderDrawStyle和RegionDrawStyle属性更改为

Individual。然后,访问Items集合,并导航到首选项,并编辑BorderLineStyle和Fill属性。您可能需

要通过Name属性(这里为“德国”)以编程方式导航Items集合。

图 5-89 将图层边框线和区域填充样式设置为 Items 集合中的单个和编辑区域。

图 5-90 用单个填充和边界绘制的德国地区。

5.25.4 鼠标交互

启用 MouseInteraction 进行各种与地图区域和对象的互操作。 区域(土地、湖泊)和矢量层(河流、

道路)可以用鼠标指向。鼠标悬停在对象上后,当 MouseHighlight 设置为 Simple 时,它将被

SimpleHighlightColor 突出显示。当 MouseHighlight 闪烁时,对象将以浅色和深色闪烁。通过将

MouseHighlight 设 置 为 None , 对 象 不 会 被 突 出 显 示 , 但 仍 可 以 单 击 并 运 行

Maps.MouseDownOnMapItem 事件处理程序。

地图对象可能包含关联 的数据,如人口或其他 统计数据。使用 MouseOverOnMapItem /

MouseOverOffMapItem / MouseDownOnMapItem 事件处理程序来访问数据。可以使用 GetInfo 方

法检索地图项的数据,给出密钥和值的字典。

以下是一个如何显示列表框中所有数据的示例。项目名称显示在一个不同的文本框中。

直接点击右上角的叉 MouseDownOnMap(MouseDownOnMapItemEventArgs args)

{

MapItem mapItem = args.MapItem;

textBoxCountryName.Text =

m_chart.ViewXY.Maps.Layers[args.Layer].Name

+ ": " + mapItem.Name;

listBoxItemValues.Items.Clear();

if (mapItem.GetInfo() != null)

{

Dictionary<string, string> dict = mapItem.GetInfo();

Dictionary<string, string>.KeyCollection keys = dict.Keys;

foreach (String key in keys)

{

String strValue;

if (dict.TryGetValue(key, out strValue))

{

listBoxItemValues.Items.Add(key + ": " + strValue);

}

}

}

}

5.25.5 背景照片

通过在Maps.Backgrounds属性中添加MapBackground对象,可以将位图图像显示为地图的背景。卫

星图像或其他光栅图像可从几个GIS数据提供者中获得。图像可以设置为图像属性,其纬度和纬度范

围可以通过LatitudeMin、LatitudeMax、LongitudeMin和LongitudeMax属性设置。在设置的范围之

外,图像不显示。

要通过地图图层显示背景,可能需要调整每个图层的填充设置。使用透明的颜色或低alpha水平的颜

色 。

图 5-91 世界地图。设置 LandOptions.FillVisible 为 false,并将一个背景图像设置为-90 ... 90 的纬度范围,-

180 ... 180 的经度范围。显示地图区域边界和城市。

5.25.6 将其他系列与地图结合

您可以将地理地图与任何 ViewXY 系列类型相结合。地图绘制在背景中,并在其上绘制系列。

图 5-92 欧洲地图,带有一对 FreeformPointLine 系列作为路线。标志标记作为鼠标交互式路径点被添加。

图 5-93 世界地图,带有 IntensityGrid 系列呈现海拔。

图 5-94 带有欧洲地图上的 IntensityGrid 系列的天气雷达数据可视化。

5.25.7 从 ESRI 形状文件数据导入地图

导入功能从.shp 文件中创建 LightningChart 映射文件(.md)。 ESRI shapefile(* .shp)是一种广

泛使用的地图文件格式,支持矢量和多边形数据。

地图向导可用于将 shapefile 数据转换为 LightningChart(LC)地图数据格式。LC 格式支持分层,

因此可以将多个 shapefiles 合并到单个文件中。地图文件结构和对象被预先处理,以实现最大的运行

时性能。

提示:LightningChart Ultimate 演示应用程序具有地图导入的示例。您可以从那里运行此导入向导,

通过导入创建自定义 LC 映射文件。

转换至少有三个步骤:

1.根据 Shapefile Selection Dialo 中的文件选择文件和设置图层。

2.确定文件文本编码。

3.选择生成的地图文件中包含的项目。

请注意,对于每个源shp文件重复步骤2和3。Shapefile无法辨别使用哪个编码,所以它必须由用户

选择。

完成这些步骤后,开始转换。如果从自定义应用程序导入地图,则鼓励开发人员设置事件处理程

序,因为转换可能需要很长时间,以便可以向用户通知转换进度。

另外,如果用户选择基本层,则可能在步骤之间可能存在相当大的延迟,这是因为基于图层前置筛

选数据。

5.25.7.1 导入 shp 数据的编程界面

转换在使用以下方法从Maps.MapConverter类初始化的线程上运行:

public bool SelectFilesAndConvert()

为了监测转换进度,有一个事件处理程序委托:

公共委托无效 ConversionStateChangedHandler(ConversionProgress progress, int i);

初始化如下:

MapConverter mapConverter = new MapConverter();

mapConverter.ConversionStateChanged += new

MapConverter.ConversionStateChangedHandler(mapConverter_ConversionStateChanged);

5.25.7.2 对话框

在转换过程中通常有三个对话框。要选择一个过滤器时,有一个不同的对话框。

5.25.7.2.1 shapefile 选择对话框

在调用SelectFilesAndConvert()函数后,打开文件选择对话框。在此对话框中,用户选择

源文件并设置分层。用户还可以通过在对话框中选择正确的文件来保存地图配置。

图5-95 源shape file选择对话框。

文件列表

按照绘制顺序包含文件列表。最后绘制底部的文件数据。 可以从列表左侧的向上/向下按

钮查询文件顺序。选择文件,然后单击上/下移动文件。

图层名称

图层的名称。例如,“国家”。

图层类型

图层类型(指定用于渲染图层的选项)

•城市:图层项目具有shapefile类型POINT的性质

•湖泊:图层项目具有shapefile类型POLYGON的性质

•土地:图层项目具有shapefile类型POLYGON的性质

•河流:图层项目具有shapefile类型POLYLINE的性质

•道路:图层项目具有shapefile类型POLYLINE的性质

•其他:图层项目具有shapefile类型POLYGON或POLYLINE的性质

基本层

当用户想要仅包含单个/某些国家/地区的地图,并且只有全球地图可用时,用于过滤上层项目选

择。例如,如果图层包含国家,则所选国家/地区中只有项目将包含在结果映射中。POINT类型有

一个微小的偏移量,所以如果点的边界足够接近,即使它不与基本层重叠也包含在内。如果所选的

shapefile中的所有数据都包含在结果映射中,则不要选择基本层,因为它会显著减慢项目选择速

度,并且检查所有项目是否与基本层重叠是一个非常耗时的过程。

描述

自由文本显示在地图属性中。

配置文件名

XML配置文件名。用于导入/替换图层。注意! 创建地图配置时使用单个文件作为导入,替换方法

只能使用一个shp输入文件。

保存配置

如果要将地图配置保存为xml文件以备以后使用,请选中此项。选择配置文件会自动设置此选项。

添加按钮

单击选择要添加到列表的shapefile。

删除按钮

从列表中删除选定的文件。

编辑名称按钮

点击打开“图层名称编辑器”。设置图层名称。

确定按钮

点击进入下一个阶段(项目选择)。

5.25.7.2.2 选择记录编码和无效的名称字段

此对话框用于选择文件文本编码和具有无效或一般名称的字段。形状文件编码可能有所不同,并且

没有关于文件中编码的信息,因此用户必须选择有效的编码。对于多个项目,项目名称可能类似于

“UNK”,因此在此对话框中可以选择哪个项目名称被清空。请注意,如果在下一阶段中选择了项

目,则这些项目仍然包含在生成的文件中。

图5-96 '记录编码'和'无效名称'字段选择对话框。

文件名

适用编码的shape file名。

图层

图层名称。

名称字段

shape file 中的项目名称字段。选择不同的字段后,相应地更新列表。

名称编码

项目名称编码(如果名称不正确,请尝试不同的值)。选择不同的编码后,相应地更新列表。

记录名称列表/选择无效名称的记录

在“名称字段”中选择的字段项目列表。

确定

确认编码选择(和可能的无效名称)。

5.25.7.2.3 图层数据选择对话框

该对话框用于从shape file中选择生成的映射文件中包含的项目。图层名称在标题中连接。对话框是

自适应的,因此对于某些图层,可以选择一些字段。例如,对于河/路类型图层,将有一个线宽选

择,可以设置为线宽字段(如果适用)。请注意,数据可能不包含对话框中询问的所有字段。名称

字段对于所有项目是强制性的。

图5-97 图层数据选择对话框。

对话框中可用的用户界面项目:

文件名

文件的名称

图层名称

图层的名称

名称字段

用于项目名称的字段。从编码选择对话框自动设置,但也可以在此处进行调整。

人口字段

用于人口数据的字段。

国家字段

国家名称字段。

线笔划宽度字段

线宽。指导线的渲染。

选择存储的项目

单独、全部选择项目,或使用过滤器对话框选择项目子集

全部切换

从文件中选择所有字段。

过滤器/选择...

选择具有选定值的字段的字段。在上图中,在地图中仅选择带有SOVEREIGNT字段的项目设置为

“加拿大”或“美国”。

反向

反向图层过滤器选择(使用过滤器选择的字段不包括在生成的映射文件中)。

选择每个项目存储的字段

点击每个项目应包括的字段。字段是Dictionary类的键值,它包含每个项目的字段。

5.25.7.2.4 项目过滤器

此对话框从图层数据选择对话框打开,用于过滤生成的地图的项目。

图 5-98 项目过滤器对话框

区域

选择过滤器依据的字段

选择包含在结果项中的值。

上述选择意味着生成的地图中包含字段名称SOVEREIGNT包含值“Canada”的项目。

5.25.8 导入和替换地图图层

用户可以将新图层导入到地图并替换现有图层。从Maps界面导入和替换地图中的图层有四种方

法。在软件应用程序运行时检索频繁更新的shp数据时非常有用的。

ImportNewLayer将新的地图图层插入到给定图层索引,而ImportReplaceLayer方法在给定图层索

引处替换地图图层。

public MapConverter.ConversionResult ImportNewLayer(String shpFilename, int

targetLayerIndex),

shpFilename是源shp文件名的名称,targetLayerIndex是新图层的索引。此方法使用上述对话框设

置地图配置。

public MapConverter.ConversionResult ImportNewLayer(String shpFilename, int

targetLayerIndex, String configFile),

shpFilename是源shp文件名的名称,targetLayerIndex是新图层的索引,configFile是映射配置文件

名。此方法使用由上述对话框创建的配置文件。

public MapConverter.ConversionResult ImportReplaceLayer(String shpFilename, int

targetLayerIndex),

shpFilename是源shp文件名的名称,targetLayerIndex是新图层的索引。此方法使用上述对话框设

置地图配置。

public MapConverter.ConversionResult ImportReplaceLayer(String shpFilename, int

targetLayerIndex, String configFile),

shpFilename是源shp文件名的名称,targetLayerIndex是新图层的索引,configFile是映射配置文件

名。此方法使用由上述对话框创建的配置文件。

配置文件是一个简单的xml文件,可以用文本编辑器进行编辑,但不建议进行编辑。

5.26 Tile Maps 并列式窗口图像

Lightning Chart 提供给您如下在线图块数据服务:

这里有:街道地图,卫星图像

图5-99。Tile Layer的属性。

在 View XY. Maps. Tile Layers 集合中添加 Tile Layer 对象。 您可以插入多个图层,使用 Alpha

Level 属性使其效果半透明化。 Tile Layer 对象在 Tile Layer 集合中的第一层的背景中顺序。

通过设置 Above Vector Map 值为 False,图层在向量图之前呈现,如果这样定义(见 6.25)

默认状态下,Tile Layer 渲染器在矢量图之后。

Tile Layer 通过 HTTP 协议从在线服务提供者中获取譬如小型图像的信息,并将它们在图表区域中

显示出来。当您放大或者缩小示意图时,这些图像会自动刷新。

加载一套全新的图块会花费一些时间,最多几秒钟即可。

图块缓存

图表将图块存储入缓存文件夹中,能够在同一区域内频繁地放大或缩小图块时极大地减少加载时间。

当图表需要显示一张图块出来时,它首先看能否在缓存文件夹中找到那张图块;如果找不到的话,就

从 web 服务中检索并恢复。在多人应用中,会有许多工作站点需要同时登录图块图像,这时选择能

够共享的本地网络服务文件夹是比较明智的。默认状态下,缓存文件夹的位置是:c:\Users\[Current

user]\AppData\Local\Temp.

在 View XY. Maps. Tile Cache Folder 中设置缓存文件夹。

通过操作 View XY. Maps. Clear Tile Cache Folder()来清除缓存文件夹。

5.26.1 Here

Lightning Chart 通过 Here 支持图款数据服务。程序开发扎或是最终用户必须同 Here 签订独家协

议,从而能够使用 Here 服务器。您能够通过访问以下网址获取免费试用:

https://developer.here.com/plans/api/consumer-mapping

选择类型

设置 Tile Layer。使 Type 值为 Street,能够使用街道图像。街道图像能够放大到非常贴近的程度。

(图5-100。Tile Layer。Type值为Satellite。)

设置 TileLayer.Type = Satellite 使用卫星图像.

(图5-101。Tile Layer。Type 街道。)

(图 5-102。Intensity Grid Series 街道图能够展示出天气元素)

5.27 线系列光标

线系列光标能够通过 X 坐标对值进行追踪,从而实现针对线序列数据的可视化分析。 系列值只能通

过 I Trackable 接口(Sample Data Series,Point Line Series,Area Series,High Low Series)

进行测算。对于其他系列类型,Y 坐标不自动由光标进行追踪。将 Line Series Cursor 对象添加到

Line Series Cursors 集合中。激活 Snap To Points,从点到点跳转光标。 使用 Style 属性来设置

光标跟踪样式。 当 Stlye 属性设置为 Point Tracking Style 时,您可以使用包含位图图像在内的任

何跟踪点样式。 当使用 Hair Cross Tracking Style 时,能够在线序列 Y 值中进行水平线的绘制。

如果同一系列的多个点命中光标位置,则线段在最小和最大点的中间进行绘制。

(图 5-103。线系列光标:垂直点跟踪光标,十字准线跟踪光标和垂直全长光标,无需跟踪)

通过激活使用 Indicate Tracking Y Range,能够绘制一个范围从最小到最大,点在光标中间的水

平带。

(图 5-104。Y 范围制表下的十字准线光标)

5.27.1 解决 Line Series Cursor 位置下的数据值

ITrackable 接口系列可以通过 X 屏幕坐标或是 X 轴的值来解决。追踪系列在准确值和粗略值方面都

有解决方法。如果有必要的话,准确方法 Solve Y Value At X Value 能够通过数据点结成环,并且

能够找到最接近的数据点进行匹配。

粗略方法 Solve Coord A teX Coord 使用该系列的已缓存渲染数据来解决 Y 屏幕坐标的匹配问题。

精准方法,通过使用数据点序列,经过 X 值推算出 Y 值

Line Series Value Solve Result result =

series. Solve Y Value At X Value(cursor. Value At X Axis);

if (result. Solve Status == Line Series Solve Status. OK)

{

//Point Line Series may have two or more points at same X value. If so,

center it between min and max

y Value = (result. Y Max + result. Y Min) / 2.0;

return true;

}

请注意!当光标.Snap To Points 被禁用时,Solve Y Value At X Value 返回靠近它的临近点的内

插值(光标线和串行线)之间。

(图 5-105。当光标.Snap To Points 被禁用时,Solve Y Value At X Value 对临近数据之间的点数进行改动。)

粗略方法,通过使用数据点序列,经过 X 轴坐标推算出 Y 轴坐标

Line Series Coordinate Solve Result result =

Series .Solve Y Coord At X Coord ((int) Math. Round(f CoordX));

if (result. Solve Status == Line Series Solve Status. OK)

{

F Coord Y = (result. Coord Bottom + result. Coord Top) / 2f;

if (axis Y. Coord To Value((int) Math. Round(f Coord Y), out y Value) == false)

{

return false;

}

}

当该系列保存大量数据点时,比如说,大于 100.000 点时,使用粗略方法通常要快得多。

如果图形大小或以像素为单位计算的 Y 段高度值比较低时,粗略方法可能会非常不准确。

通过调用 X 轴和 Y 轴的 Coord To Value,粗略方法的屏幕坐标能够转换为一定的轴值。

使用 Annotation X Y 对象显示光标旁边的值是很好的操作方法。参见 5.19 章。

(图 5-106。Line Series Cursor 被用来追踪 Point Line Series。数值展现在 XY 轴的释文中。)

5.28 事件标注功能

事件标注功能能够标记出利益相关点,无论是在实时监视过程中发生的特殊情况还是您仅仅想用特

殊的释文标记出一些数据。您能够使用标注功能中的 Symbol 属性自定义标注符号,使用标注功能

中的 Label 属性自定义文本标签。使用 Vertical Position 属性设置垂直方位,必要时,使用 Offset

属性替换目标属性。所有的事件标注功能必须使用 X Value 进行分配,X Value 能够在 X 轴上设置

时间标注功能的位置。

(图 5-107。在贸易样例中的事件标注器)

5.28.1 图表事件标注功能

Chart Markers 集合属性能够添加图表标注。一个图表标注器能够用来显示,比如“”。图表事件标

注器对于所有系列来说都是通用的。您能够使用鼠标将标注从一个地方拖拽到另一个位置上。

5.28.2 线性系列事件标注功能

线性系列有 Series Event Markers 集合属性。能够用来标注一系列的特殊事件。事件的标注能够在

使用鼠标从一个位置拖拽至另一个位置的同时,保留相应的数据值。想要达到这个效果,您只需要将

Vertical Position 设置成 Track Series 即可。这能够促进 I Trackable 界面的实施。将 Vertical

Position 的值设置成 At Y Value,能够帮助您在任何的 Y 轴上垂直设置标记。

通过将 Horizontal Position 设置成 Snap To Points,标注器将其自身水平对齐到最近位置

的数据点。将 Horizontal Position 设置成 At X Value 值能够实现水平独立放置标记

点。

5.29 持续的序列渲染层

Persistent Series Rendering Layer 可用于对重复线/点数据的极快速渲染,或用于在线/点/高低/

区域内填充数据,这些数据被重复地绘制在相同的 X 和 Y 范围内。

例如,我们来看一个 FFT 监控实例:每秒接收 20 个新的数据条;您想看到最新的以及所有的历史

记录;监视持续数小时;普通渲染情况下,渲染此类数据,每小时需要 20*60*60=72000 条新的线

性序列。电脑可能连一个小时的监控都无法完成就先损耗尽内存了。能够肯定的是,渲染运行的会极

其缓慢,直到再也不能使用。

Persistent Series Render Layer 是一种数位图,能够在其中逐渐添加渲染数据。它能够一直存留

着图形直到被命令语段清除。这样每次更新一轮,你只需要一个系列在图层上进行渲染,然后在屏幕

上渲染图层。 CPU 负载或内存占用不会上升。如果现有数据逐渐消失的话,可以通过乘以位图像素

的α值来实现数据的渲染。

您能够如您所想,创建尽可能多的 Persistent Series Render Layer 对象。也能够在每个对象上渲

染任意点数,或是进行更新。

(图 5-108。持续的图层能够显示历史记录,以绿色呈现出来。通常的 Point Line Series 则以红色覆盖其显

示出来。)

(图 5-109。持续的图层能够显示历史记录,以绿色呈现出来。在更新渲染层中的新数据之前使用了 Multiply

Alpha 方法,因此它更迭最老的历史记录。)

5.29.1 创建图层

Persiste n Series Render Layer 不是 View X Y 的子属性,不能使用 Visual Studio 的属性网格

进行增添操作。Persistent Series Render Layer 对象必须以代码形式进行增添。如下所述进行创

建:

using Arction. Lightning Chart Ultimate. Views. View X Y;

Persistent Series Rendering Layer layer = new Persistent Series Rendering Layer

(m_ chart. View X Y, m_ chart. View X Y. X Axes[0]);

通过将 View X Y 物体以参数形式运行之后,它就能够绑定 View X Y 中的图层了。提供相同的 X

Axis 对象,您能够和在 X Axis 对象上渲染的系列一起使用。

如果您已经创建了多个图层,它们将以图表的创建顺序进行渲染。

5.29.2 清空图层

layer. Clear()清除图层,并使用 ARGB =(0,255,255,255)对颜色进行初始化操作。

layer. Clear(Color color)用给定的颜色清除图层。 在大多数情况下,设置相同的颜色比设置您

在背景中使用的颜色更有效,但是记得将 A 值设置为 0。如果是黑色的背景,请使用 layer. Clear

(Color. From Arg b(0,0,0,0));

5.29.3 调整图层字母符号

Multiply Alpha (value)能够使图层变得更加透明或是不透明。分别增加图层中的像素效果。

通过设置值<1,透明度将会增加(图层衰减)。

通过设置值> 1,不透明度将增加(使图层更加清晰可见)。

当值数为 1 时,无效果。

例如,Multiply Alpha(0.8)将 alpha 设置为现有 alpha 的 80%。 Multiply Alpha(2)将其调

整至 200%。

5.29.4 在图层中渲染数据

通过使用 Point Line Series, Sample Data Series, Free form Point Line Series, High Low

Series 或 Area Series 将数据渲染至图层中。

它们可以是已经被添加进 View X Y. Point Line Series,View X Y. Sample Data Series,View

X Y. Free form Point Line Series,View X Y. High Low Series 或 View X Y. Area Series 集合

的系列。您也可以使用尚未被添加进 View X Y. Point Line Series,View X Y. Sample Data Series

或 View X Y. Free form Point Line Series,View X Y. High Low Series 或 View X Y. Area

Series 集合中的暂时的系列。在系列中以常规方式填写数据(详情参见第 6.5.4 章节的“Point Line

Series”,6.6.2 章节的 Sample Data Series,6.7 章节的 Free form Point Line Series, 6.9.4

章节的 High Low Series, 6.10.1 章节的 Area Series)。

layer. Render Series(Point Line Series Base 系列):在图层上渲染一个系列。

layer. Render Series(List <Point Line Series Base> series List):在图层上渲染所有指定的系

列。比分别调用 layer. Render Series(Point Line Series Base 系列)更有效率。

请注意!所有指定的系列都将在图层上进行渲染,即使它们的 Visible 值被设置为 False。

请注意!与系列一同使用的 X 轴必须与提供的 Persistent Series Rendering Layer 构造器相同。

否则,它将跳过系列目标。

请注意! Render Series 是用于渲染进图层的。图层本身将在常规系列(Point Line Series,Sample

Data Series,Free form Point Line Series,High Low Series,Area Series)之前进行渲染。

5.29.5 处理图层

要配置图层并防止它以图表形式呈现,请调用 layer. Dispose()。

5.29.6 图层中的反图形失真数据

针对图表渲染阶段的反图形失真数据,请设置 layer. Anti Aliasing 值为 True. 即使硬件不支持的

情况下,也能设置出反图形失真数据效果。

5.29.7 获取图层菜单

View X Y. Get Persistent Series Rendering Layers()返还了所有创建出的图层列表,包括

Persistent Series Rendering Intensity Layers。

5.29.8 您应该注意到的一些图层限制

由于其特殊的渲染技术,这是一些您应该记住的限制条款:

-X 轴 Scroll Mode 必须要设置成 None。X 轴的实时滚动条在此方法下不能实现。

-缩放,平移,轴调整和图表调整大小将导致图像与轴的范围不同步。在使用持久绘图或应用逻辑时,

应禁用这些功能,以便清除图层,并临时重建旧的行系列以进行新的图层渲染(这里有轴范围更改和

调整大小的事件处理程序)。

-图表调整大小将清除图层。 也将从 Windows 桌面锁定状态恢复。

- 仅在图层上呈现的系列中不支持鼠标交互

- 将 EMF / WMF / SVG 导出,以矢量格式复制到剪贴板,以矢量格式打印出的东西不支持图层。

只支持栅格格式。

5.30 持续的渲染强度层系列

Persistent Series Rendering Intensity Layer 能够将历史记录收集到图层中,并通过计算像素值

进行着色。每个像素计数着色是通过值范围的调色板进行测算的。历史记录可以与 Persistent Series

Rendering Layer(参见第 6.29 节)是相同的系列类型,并且与之非常相似,主要区别在于其着色

程度。当使用第二次渲染再次渲染相同像素位置的轨迹时,随着它强度的增长,它在价值范围调色板

中也相对应的,将获得更高的价值。

图 5-110。持续强度层突出显示了活动范围集中在哪里,这里呈现的是黄色和红色。

图 5-112。重复信号跟踪在同一区域呈现。在左边的图层上只渲染了几条痕迹。所有颜色都显示为蓝色。在

中心的图片中,已经呈现了很多痕迹,但大多数已经呈现不同的坐标。在轨迹的交叉点中,命中数超过调

色板中定义的 10 的追踪计数黄色阈值。在最右边的图片中,总共呈现了数百条痕迹,从交叉点开始超过为

红色定义的阈值。

5.30.1 创建一个图层

Persistent Series Rendering Intensity Layer 不仅仅是 View X Y 的一个附属特性。也不能够使

用 Visual Studio 的属性网格进行增添操作。Persistent Series Rendering Intensity Layer 这个

对象必须是用代码来进行创建。

如下所示进行代码的创建:

using Arction. Lightning Chart Ultimate. Views. View X Y;

Persistent Series Rendering Intensity Layer layer = new

Persistent Series Rendering Intensity Layering Layer(m_ chart. View X Y,

m_ chart. View X Y. X Axes[0]);

5.30.2 清除选定图层

layer. Clear()能够清除图层并重新设置计数器。

5.30.3 改变调色盘的颜色

在图层的 Value Range Plette 这个属性中对调色盘的类型和步骤进行相关的设定。比如:设置

Value Range Palette. Type值为Gradient就能得到一个有倾斜度的着色效果,设置Value Range

Palette. Type 值为 Uniform 就能够使图层使用离散颜色步骤进行相关的渲染操作。

5.30.4 调整新描绘的强度效应和老描绘的减退状态

使用 New Trace Intensity 属性来控制使用 Render Series 的新跟踪渲染的强度效果。典型值可能

是从 1 到 100,这取决于您想要用什么样的颜色范围填补你的描绘状态。使用 History Intensity

Factor 来调整旧描绘的减退状态。 典型值将在范围 0.5 至 0.99 之间。

请注意,设置属性 History Intensity Factor 本身不会更新图层。而下一次调用 Render Series 时

需要,直到它生效。

5.30.5 将数据渲染至图层中

通过使用 Render Series 方法,将 Point Line Series,Free form Point Line Series,Sample

Data Series,High Low Series 或 Area Series 渲染到图层中。

layer. Render Series(Point Line Series Base 系列):在图层上渲染一个系列。

layer. Render Series(List <Point Line Series Base> series List):在图层上渲染所有给定的系

列即使。没有性能提升超过 layer. Render Series(Point Line Series Base 系列)。

当数据更新到图层中时,New Trace Intensity 可用于新的描绘。旧的描绘数据将随着 History

Intensity Factor 在同一时期处于减退状态。 layer. Render Series(列表<Point Line Series

Base>series List)在每个系列对象之后削弱旧的历史记录。

5.30.6 处理图层操作

要配置图层并防止它以图表的形式呈现,请调用 layer. Dispose()。

5.30.7 图层中的防止图形失真数据

要在图表渲染阶段中将数据防止图形失真化,请将 layer. Anti Aliasing 值设置为 True。即使在硬

件不支持的条件下,它也会呈现出防止图形失真化。

5.30.8 获取图层列表

View XY. Get Persistent Series Rendering Layers()能够往返所有创建图层的列表,包括

Persistent Series Rendering Layers。

6. View3D

View3D 允许在 3D 空间中的可视化数据。 3D 模型可以通过各种方式进行缩放,旋转和点亮。不

同的系列类型可以放置在同一个 3D 视图中,从而形成一个组合的可视化。

图 6-1。 View3D 对象主树。

6.1 3D 模型和尺寸

图 6-2。 3D 模型正负方向。

3D 模型构建在 3D 世界的中心。尺寸大小定义 3D 空间中模型框的大小。墙壁和轴尺寸由此尺寸框

定义。使用 Dimensions 属性设置每个尺寸的大小。当没有定义相机旋转时,正 X 方向向右,正 Y

向上,正 Z 方向向内延伸到屏幕。

6.1.1 世界坐标

一些 3D 对象使用“世界坐标”,而不是轴值。例如,光以这种方式定位,以独立于轴范围。世界坐

标也可称为“三维模型空间坐标”。

原点坐标[0,0,0]位于模型的中心。实际的3D模型空间范围从[-Dimensions.X / 2到Dimensions.X

/ 2],[-Dimensions.Y / 2 to Dimensions.Y / 2]和[-Dimensions.Z / 2 to Dimensions.Z / 2]。

LightningChart 提供了在串行值,轴值,世界坐标和屏幕坐标之间转换值的方法。有关详细信息,

请参阅演示应用示例和帮助文档。

图 6-3。 3D 视图设置示例。尺寸设置为 X = 100,Y = 40,Z = 80。可见墙面:左面,底面,后面。使用透

视相机。

6.2 墙面

墙面(WallOnFront,WallOnBack,WallOnTop,WallOnBottom,WallOnLeft,WallOnRight)

用于显示轴网格和网格条,并为轴提供基础。默认情况下,可以看到底部,左侧,右侧,后部和前部

墙面。它们的 AutoHide 属性设置为 true。当您旋转视图时,阻塞墙被暂时隐藏,以便它们不会阻

止图表内容的视图。要强制墙可见,请设置 Visible = true,AutoHide = false。

使用 XGridAxis,YGridAxis,ZGridAxis,GridStripColorX,GridStripColorY,GridStripColorZ

和 GridStrips 属性来选择哪些轴应用网格并对网格条进行着色。可用属性取决于墙面方向。

6.3 框盒

您可以用 3D 盒代替墙面。 把墙面设置为 Visible = false,FrameBox.Style = AllEdges。使用

FrameBox.LineColor 设置颜色或框。

图 6-4。 隐藏墙面,显示框盒

6.4 相机

图 6-5。相机属性。

相机类型,位置,距离和目标一起决定 3D 视点。使用 RotationX,RotationY,RotationZ 和

ViewDistance 来设置 3D 模型空间中的摄像机位置。通过设置目标属性将相机对准首选方向。通过

设置 OrthographicCamera 来改变正摄相机。使用自动相机,ViewDistance 不起作用。透视摄像

机以现实生活方式显示模型,正摄相机更适合某些技术应用。

RotationX,RotationY 和 RotationY 可以通过在 RotationXMinimum, RotationXMaximum,

RotationYMinimum, RotationYMaximum, RotationZMinimum 和 RotationZMaximum 特

性中设置边界来限制。

图 6-6。透视摄像机呈现在 3D 空间。

图 6-7。透视相机视图和 3D 空间中的正交相机视图。

6.4.1 预定义相机

使用 View3D.Camera 的 SetPredefinedCamera 方法设置其中一个预定义的摄像机。

6.5 光

光可以自由放置在 3D 模型空间的任何位置。光线可添加至光线集合属性中。有两种不同光的类型:

平行光与点光。

图 6-8. 平行光和光点。

注意!某些系列类型可以通过使用 SuppressLighting 属性从表面完全抑制照明。如果要使序列正确

点亮,请检查是否未启用。 表面系列有可选择正确点亮表面的 LightedSurface 属性,。

注意!如果将所有的灯都放在 3D 模型盒内,墙壁边缘可能会显得很暗,可能

使轴线刻度几乎不可见。在这种情况下可调整轴剔色。

6.5.1 平行光

在平行光中,光线是平行的,光强度不会随距离增加而衰减。光通量从位置和目标属性获得方向。使

用 LocationFromCamera 属性使相机的位置作为光源。

6.5.2 光点

光 点 强 度 随 着 距 离 的 增 长 而 衰 减 。 使 用 AttenuationConstant , AttenuationLinear 与

AttenuationQuadratic 属性,通过距离来控制衰减。

目标对于这种光线类型没有任何意义,因为光会均匀地分布到所有方向。

6.5.3 光线与材料

所有 3D 对象都具有 Material 属性。材料可以通过辨别知道如何对光线做出反应。 材料的漫反射颜

色可对光线的漫反射颜色作出反应。材料的高光颜色会根据光线的高光颜色作出反应。漫反射颜色

可理解为哑光底色,高光颜色是光照表面发射的颜色。应用较高的 SpecularPower 可使物体具有金

属质感的外表。

表面序列具有 ColorSaturation 属性,有效范围为 0%-100%。 高值提高了表面

填充颜色,并减少阴影效果。

图 6-9 左侧的图片具有 ColorSaturation = 50%。 右图的 ColorSaturation = 85%。

6.5.4 预定义照明方案

使用 View3D 的 SetPredefinedLightingScheme 方法选择内置的预定义照明方案。

图 6-10 预定义的“DiscoCMY”方案正在使用中。该方案由三个不同颜色的 PointOfLights 组成天花板。 球

体和锥体由一系列类型的 PointLineSeries3D 制成。

6.6 轴

对于每个维度,有两个轴:主轴和副轴。所以,在 View3D 下,轴属性可用:XAxisPrimary3D、

XAxisSecondary3D、YAxisPrimary3D、YAxisSecondary3D、

ZAxisPrimary3D、ZAxisSecondary3D。

一般来说,3D 轴类似于 ViewXY 的轴,许多属性与方法是相似的。

6.6.1 位置

轴可定位在 3D 模型箱角。使用轴位置属性进行调整。

• 对于 X 轴,Location 选项有:BottomFront、BottomBack、TopFront、TopBack。

• 对于 Y 轴,Location 选项为:FrontLeft、FrontRight、BackLef、BackRight。

• 对于 Z 轴,Location 选项有:BottomLeft、BottomRight、TopLeft、TopRight。

图 6-5 默认轴位置设置,XAxisPrimary 在 BottomFront,YAxisPrimary 在 FrontLeft 和 ZAxis 在 BottomRight。

图 6-5 ZAxisPrimary 位置设置为 BottomLeft。

图 6-11 次轴设置为可见,其位置和颜色任意设定。 次级 Y 轴的 ScaleType 设置为对数。

6.6.2 方向

每个轴可定向在两个平面中。

• X 轴:XY 和 XZ 平面

• Y 轴:XY 和 YZ 平面

• Z 轴:XZ 和 YZ 平面

图 6-5 X 轴方向

图 6-5 Y 轴方向保持一致,但 X 轴面向 XY,Z 轴改成朝向 XZ,Z 轴方向更改为朝向 ZY 平面。

6.6.3 角点对齐

可以使用 CornerAlignment 属性更改 3D 模型框角中的轴对齐。使用 MajorDivTickStyle 与

MinorDivTickStyleAlignment 属性来控制文本对齐。

图 6-12

第一张图:在这个例子中只有 Y 轴是可见的。Y 轴 CornerAlignment 设置为 Inside。MajorDivTickStyle 与

MinorDivTickStyle 中的 Alignment 属性设置为 Near。

第二张图:CornerAlignment 设置为 AtCorner。

第三张图:CornerAlignment 设置为 Outside。

6.7 3D 序列,综述

View3D 的系列允许使用不同的方式与格式对数据进行可视化。所有序列与轴值范围进行了绑定。对

于每个维度,您可以选择将该序列绑定到主轴或副轴。使用 XAxisBinding、YAxisBinding、

ZAxisBinding 属性进行控制。

6.8 PointLineSeries3D

PointLineSeries3D 允许在 3D 空间中呈现点和线。对于点,有很多基本的 3D 形式可用。如果将

LineVisible 属性设置为 true,则点与线可连接在一起。

图 6-13 PointLineSeries3D 示例,将 PointStyle 的 Shape 设置为 Sphere

6.8.1 点样式

点可以真实的 3D 点或 2D 形状的方式呈现。

图 6-14 PointStyle 属性树 ShapeType 在 2D 和 3D 外形间切换

图 6-15 红十字 ShapeType = Shape2D Teal 与 Green 对象 ShapeType = Shape3D

注意!2D 外形是在所有 3D 对象的顶部进行渲染并且在其它对象可见性上不支持隐藏。

6.8.2 线条样式

图 6-16 LineStyle 属性

线条可以渲染为带有阴影的 3D 线条或 1 像素宽的发线。

当序列中含有大量数据时,建议设置 LineOptimization = Hairline,否则性能会有所减弱。

图 6-1

黄线:LineStyle.LineOptimization=Hairline

红线:LineStyle.LineOptimization = NormalShaded

6.8.3 添加点数

PointLineSeries3D 支持两种不同的点格式

• Points 属性(SeriesPoint3D 数组)

• PointsCompact 属性(SeriesPointCompact3D)

设置要在 PointsType 属性中使用的点格式。

注意!可绑定的 WPF 图表不支持 PointsCompact。

使用 Points 属性时,支持点的所有高级着色。

SeriesPoint3D 结构由以下字段组成:

double X:X 轴值

double Y:Y 轴值

double Z:Z 轴值

Color color:个别数据点颜色,IndividualPointColors 或 MultiColorLine 启用时,才可使用。

double sizeFactor:size factor 乘以 PointStyle.Size 定义的大小。仅在 IndividualPointSizes 启用时

适用。

object Tag:可自由分配辅助对象,例如一些附加的细节。

点必须以代码的形式添加。使用 AddPoints(...)方法将点添加到现有点的末尾。

SeriesPoint3D [] pointsArray = new SeriesPoint3D [3];

pointsArray [0] = new SeriesPoint3D(50,50,50);

pointsArray [1] = new SeriesPoint3D(30,50,20);

pointsArray [2] = new SeriesPoint3D(80,50,80);

chart.View3D.PointLineSeries3D [0] .AddPoints(pointsArray); //添加点

结束

若要一次设置整个系列数据并覆盖旧点,可直接分配新的点数组:chart.View3D.PointLineSeries

[0] .Points = pointsArray; //分配点数组 PointsCompact

PointsCompact 属性可实现低内存消耗,当有大量的数据点时这十分重要。

SeriesPointCompact3D 结构由以下字段组成:

float X:X 轴值

float Y:Y 轴值

float Z:Z 轴值

SeriesPointCompact3D [] pointsArray = new SeriesPointCompact3D [3];

pointsArray [0] = new SeriesPointCompact3D(50,50,50);

pointsArray [1] = new SeriesPointCompact3D(30,50,20);

pointsArray [2] = new SeriesPointCompact3D(80,50,80);

chart.View3D.PointLineSeries3D [0] .AddPoints(pointsArray); //添加点

结束

要一次设置整个系列数据并覆盖旧点,可直接分配新的点数组:

chart.View3D.PointLineSeries [0] .PointsCompact = pointsArray; //分配

点数组

6.8.4 单独对点进行着色

设置 IndividualPointColors = True,点的颜色字段应用会替代 Material.DiffuseColor。

图 6-18 正在使用的 IndividualPointColors

注意! 当 PointsType = PointsCompact 时,不支持单独给点上色。

6.8.5 单独设置点的尺寸

通过设置 IndividualPointSizes = True ,这些点的 sizeFactor 字段便会生效。该系数会与

PointStyle.Size 中定义的大小相乘。

图 6-19 正在使用的 IndividualPointSizes

注意! 当 PointsType = PointsCompact 时,不支持单独设置点的尺寸。

6.8.6 多色线

要使用给定的数据点颜色对线着色,设置 MultiColorLine = True,图表在相邻点中图表插入颜色渐

变。

图 6-20 启用 MultiColorLine

注意! 当 PointsType = PointsCompact 时,MultiColorLine 不支持此功能。

6.8.7 显示百万散点

为了能够显示大量散点,设置 PointsOptimization = Pixels,然后每个序列点会作为单个像素进行渲

染。

图 6-21 百万散点 LineVisible = False,PointsVisible = True,PointsOptimization = Pixels

6.9 SurfaceGridSeries3D

SurfaceGridSeries3D 允许将数据可视化为 3D 表面。在 SurfaceGridSeries3D 中,节点在 X 维度上

按照相同间隔放置,同时在 Z 维中也是以相同间隔放置的。

图 6-22 表面网格序列带有默认样式,高度数据使用的是正弦公式,图例框显示高度着色间隔。

图 6-23 表面网格节点 SizeX = 5,SizeZ = 7

节点距离自动计算为:

6.9.1 设置表面网格数据

- 使用 RangeMinX 和 RangeMaxX 属性设置 X 范围,在分配的 X 轴中排列最小值和最大值

- 使用 RangeMinZ 和 RangeMaxZ 属性设置 Z 范围,在分配的 Z 轴中排列最小值和最大值

- 设置 SizeX 和 SizeZ 属性以给网格中的列和行设置尺寸。

- 为所有节点设置 Y 值:

方法:使用数据数组索引

for(int nodeIndexX = 0; nodeIndexX <columnCount; nodeIndexX ++)

{

for(int nodeIndexZ = 0; nodeIndexZ <rowCount; nodeIndexZ ++)

{

Y = //某些高度值。

gridSeries.Data [iNodeX,iNodeZ] .Y = Y;

}

}

gridSeries.InvalidateData(); //提示新值已准备就绪并刷新

备选方法,使用 SetDataValue

for(int nodeIndexX = 0; nodeIndexX <columnCount; nodeIndexX ++)

{

for(int nodeIndexZ = 0; nodeIndexZ <rowCount; nodeIndexZ ++)

{

Y = //某些高度值

gridSeries.SetDataValue(nodeIndexX,nodeIndexX,

0,// X 值与网格不相关

Y,

0,// Z 值与网格无关

Color.Green); //源点颜色不在此实例中应用,所以在这里可使用任意颜色

}

}

gridSeries.InvalidateData(); //提示新值已准备就绪并刷新

6.9.2 从位图文件中创建曲面

您可以从位图图像中创建曲面。可通过使用 SetHeightDataFromBitmap 方法来实现。表面获取位图

的尺寸(如不使用抗锯齿或重采样)。对于每个位图图像的像素,红、绿、蓝值相加;总和越大,该

节点的高度数据值越高。黑色与深色的值较低;亮色与白色的值较高。

图 6-24 源位图和计算表面高度数据,深色值位置较低,亮色值位置较高。

6.9.3 填充样式

使用填充属性选择填充样式。以下选项可用

•无样式:通过使用无样式,不进行填充。这是您可能想要使用线框网格的选择。

•FromSurfacePoints:使用 Data 属性节点的颜色。

•色调:适用 ToneColor

•PalettedByY:通过调色板着色 Y 值,请参见第 7.8.4 节。

•PalettedByValue:通过调色板通过 SurfacePoint's Value 字段进行着色,请参见第 7.8.4 节。

位图:拉伸位图图像以覆盖整个表面。在 BitmapFill 属性中设置位图图像。BitmapFill 属性具有垂

直和水平镜像图像的子属性。

图 6-5 FromSurfacePoints 填充。给每个数据点上色。图 6-5 色调填充。

图 6-5 PalettedByY 图 6-5 位镜像填充。

图 6-5 PalettedByValue.

6.9.4 轮廓调色板

使用 ContourPalette 属性,您可以定义高度着色的颜色步骤。ContourPalette 可用于

• 填充 (见 第 6.9.3 节)

•线框网格(见第 6.9.5 节)

•轮廓线(见第 0 节)

对于轮廓调色板,您可以定义无限次的步骤。每个步骤都有一个高度值和相应的颜色。

调色板由最小值、类和步骤属性定义。对于类型,有两个选择:统一和渐变。上图的轮廓调色板(注

意图例框):

- 最小值: 0

- 类: 统一

- 步骤:

• 步骤[0]: 最大值:25,颜色: 红色

•步骤[1]: 最大值:50, 颜色: 蓝色

•步骤[2]: 最大值:75, 颜色: 绿黄色

•步骤[3]: 最大值:100, 颜色: 白色

低于第一步值的高度值用第一步骤的颜色着色

图 6-25 设置表面网格系列轮廓调色板类型为渐变。

6.9.5 线框网格

使用 WireframeType 选择线框样式。选项有:

•无样式:无线框

•线框:纯色线框。使用 WireframeLineType.Color 设置颜色

•WireframePalettedByY:线框着色遵循 SurfacePoint 的 Y 字段 ContourPalette(参见第 7.8.4 节)

•WireframePalettedByY:线框着色遵循 SurfacePoint 的值字段,ContourPalette(见第 7.8.4 节)

•WireframeSourcePointColored:线框着色遵循表面节点的颜色

•点:在节点位置绘制纯色点

•DotsPalettedByY:在节点位置绘制点,并由 ContourPalette 着色,由 SurfacePoints 的 Y 字段着

•DotsPalettedByValue:点在节点位置绘制,并由 ContourPalette 着色,由 SurfacePoints 的 Value

字段

•DotsSourcePointColored:在节点位置绘制点,着色遵循表面节点的颜色

线框线条样式(颜色、宽度、花样)可以使用 WireframeLineStyle 进行编辑。

注意!仅当 WireframeLineStyle.Width = 1 和 WireframeLineStyle.Pattern = Solid 时,调色板彩色

线框线和点可用。

图 6-27 WireframeType=Wireframe。图 6-26 WireframeType = WireframePalettedByY。

图 6-29 WireframeType = SourcePointColored。 图 6-28 WireframeType = Dots。

图 6-31.WireframeType=DotsPalettedByY。

图 6-30.WireframeType=

DotsSourcePointColored。

使用线框同时填充时的一些注释

当填充和线框在 3D 模型中绘制在相同位置时,可能会产生斑驳。可以将其看作是断线的线框线。这

是因为 GPU 无法确定哪个对象更靠近摄像机。

图 6-32 表面网格线框填充。斑驳显示为断线线框。

为 防 止 发 生 斑 驳 , 请 使 用 WireframeOffset 或 DrawWireframeThrough 属 性 。 通 过 使 用

WireframeOffset,线框在 3D 模型空间中稍微向某个方向移动。 DrawWireframeThrough 通过填

充绘制线框,无论相机是否能看到表面的一部分。

图 6-33 WireframeOffset =(X = 0; Y = 0.1; Z = 0)。 图 6-34 DrawWireframeThrough 已启用。

6.9.6 轮廓线

轮廓线不使用调色板填充填充表面就可快速解释高程数据,而。轮廓线可以与填充和线框结合使用。

通过设置 ContourLineType 属性,可以使用不同的样式绘制轮廓线:

- 无样式: 不显示轮廓线

-FastColorZones:线条被绘制成薄的垂直区域。非常强大的渲染,非常适合持续更新的或动画的表

面 。 大 幅 度 的 高 程 变 化 用 细 线 显 示 , 斜 线 高 度 差 异 用 粗 线 表 示 。 所 有 行 都 使 用 与

ContourLineStyle.Color 属性定义的相同颜色。 区域高度可以由 FastContourZoneRange 属性设置。

- FastPalettedZones:与 FastColorZone 相同,但线条着色遵循 ContourPalette 选项(见第 7.8.4 节)

- ColorLineByY 和 ColorLineByValue:轮廓线用实线制成。 渲染所需时间比 FastColorZones 长。

线宽可以使用 ContourLineStyle.Width 属性进行调整。可以用 WireframeOffset 属性移动轮廓线,

填充时以消除可能的出现的斑驳。

- PalettedLineByY 和 PalettedLineByValue:与 ColorLineByY 和 ColorLineByValue 相同,但线

条着色遵循 ContourPalette 选项(参见第 6.9.4 节)

图 6-35 ContourLineType = FastColorZones。

图 6-36 ContourLineType = FastPalettedZones。

图 6-37 ContourLineType = ColorLine。

图 6-38 ContourLineType = PalettedLine。

图 6-39 ContourLineType = PalettedLineByValue

6.9.7 滚动曲面数据

SurfaceGridSeries3D 和 SurfaceMeshSeries 具 有 InsertRowBackAndScroll 和

InsertColumnBackAndScroll 方法,用于将性能优化的周期性数据添加到最后一列或最后一行。 考

虑以下 3D 光谱界面。新的 FFT 值将作为最后一行添加(靠近摄像机),而旧数据和时间轴(Z 轴)

必须滚动。必须脱落最旧的表面值。

图 6-40 用表面网格呈现 3D 光谱。InsertRowBackAndScroll 方法用于性能优化的数据添加。Fadeaway 属性

为 100,使表面顺利地向向后褪色。使用透视相机。

图 6-41 使用表面网格呈现光谱图。使用 InsertColumnBackAndScroll 方法。 模型上方的正交相机用于给出

直线和垂直的投影。SuppressLighting 被启用以去除光反射。Fadeaway = 0,以使网格系列完全可见。

6.10 SurfaceMeshSeries3D

SurfaceMeshSeries3D 与 SurfaceGridSeries3D 几乎相似。它们最大的区别是表面节点可以在 3D 空

间中自由定位。表面也不一定是矩形。

SurfaceMeshSeries3D 可以将表面扭曲成任何形状,如球体或人体头部。

图 6-42 SurfaceMeshSeries3D,几何结构作为一个管道。

图 6-43 表面网格节点。SizeX = 4,SizeZ =4

6.10.1 表面网格数据设置

- 设置SizeX 和SizeZ属性以使网格具有列和行的大小。

- 为所有节点设置X、Y和Z值:

具有数据数组索引的方法

for (int nodeIndexX = 0; nodeIndexX < columnCount; nodeIndexX ++)

{

for (int nodeIndexZ = 0; nodeIndexZ < rowCount; nodeIndexZ ++)

{

meshSeries.Data[nodeIndexX, nodeIndexZ].Y = xValue;

meshSeries.Data[nodeIndexX, nodeIndexZ].Y = yValue;

meshSeries.Data[nodeIndexX, nodeIndexZ].Z = zValue;

meshSeries.Data[nodeIndexX, nodeIndexZ].Value = dataValue;

}

}

meshSeries.InvalidateData(); //通知可以刷新新值

交替法,使用SetDataValue

for (int nodeIndexX = 0; nodeIndexX < columnCount; nodeIndexX ++)

{

for (int nodeIndexZ = 0; nodeIndexZ < rowCount; nodeIndexZ ++)

{

meshSeries.SetDataValue(nodeIndexX, nodeIndexZ,

xValue,

yValue,

zValue,

dataValue,

Color.Green); //Source point colors are not used in this example, so use any color here

}

}

meshSeries.InvalidateData(); //通知可以刷新新值

6.10.2 在 3D 中可视化点云

SurfaceMeshSeries3D 也可用于随机放置点云可视化,高达数百万点。

- 在数据数组中设置点,以使数据的大小至少为 2x2。

- 设置填充=无样式,ContourLineType =无样式

-设置 WireFrameType = DotsPalettedByY 或 DotsPalettedByValue

- 在 WireFrameLineStyle.Width 设置点的像素大小。宽度。

图 6-44 使用点调色板着色使点云可视化。

6.11 WaterfallSeries3D

使用 WaterfallSeries3D,数据在区域带可视。可以像 SurfaceGridSeries3D 一样给区域填充、画线

框和轮廓线,参见第 7.8 节。在 Y 维度,区域从 BaseLevel 属性值开始。节点数据可以像

SurfaceMeshSeries3D 一样设置,参见 6.10.1 节。

图 6-45 两个瀑布系列。在左侧的紫色系列中,X 和 Z 呈矩形。BaseLevel = 10。在右侧的红绿蓝色系列中,

X 和 Z 值被弯曲,每一行都放置在不同的水平位置。

WaterfallSeries3D 特别适用于呈现传统 3D 光谱。

图 6-46。用于传统频谱演示的瀑布系列。

6.12 BarSeries3D

BarSeries3D 允许在 3D 中进行条形图数据可视化。

6.12.1 条形分组

条形系列可以与 View 3D 的 BarView Options 属性中的许多选项进行分组。BarView Options.View

分组控制如何在 3D 视图中对条形进行分组。

图 6-47 BarViewOptions。ViewGrouping = GroupedIndexedFitWidth。 条宽度和组间隙被布置成适合的宽度。

图 6-48 BarViewOptions。ViewGrouping = GroupedIndexed。 应用原始条宽,排列组以适合图表宽度。

图 6-49 BarViewOptions。 ViewGrouping = GroupedByXValue。 条 X 值适用。

图 6-50 BarViewOptions。ViewGrouping = StackedIndexed。 具有相同索引的所有条被堆叠。

图 6-51 BarViewOptions。ViewGrouping = StackedByXValue. 具有相同 X 值的所有条都被堆叠。因为 X 值

和索引相同,此示例图片与 StackedIndexed 相似。

图 6-52 BarViewOptions。ViewGrouping = StackedStretchedToSum. 将具有相同 X 值的所有条堆叠并拉伸至

StackSum。

图 6-53 BarViewOptions.ViewGrouping = Manhattan。第一个系列值显示的最接近相机,最后一个系列离相

机最远。条 X 值控制 X 维中的条位。

6.12.2 条形样式

Bar Series 3D 具有用于控制条形形状的 Shape 属性。不仅如此,有了一些形状之后,你

可以使用 Corner Percentage 属性来改变角圆角和使用 Detail Level 属性来改变视觉效果质量。

图 6-54。形状:简单,柱体和圆柱体。

图 6-55。形状:锥形,反转锥形和金字塔形。

图 6-56。形状:Reversed Pyramid(倒金字塔),椭圆形球状和有倾斜面的物体。

6.12.3 设置条状系列数据

条状系列数据可以这样添加:

// create new values array

Bar Series Value 3 D [] values = new Bar Series Value 3 D [3];

Values [0] = new Bar Series Value 3 D (20, 45, 5, “”);

Values [1] = new Bar Series Value 3 D (30, 50, 5, “”);

Values [2] = new Bar Series Value 3 D (40, 35, 5, “”);

// add values to series

chart. View 3 D.Bar Series 3 D [0]. Add Values (values, false);

6.12.4 水平显示条状

条状沿 Y 轴方向绘制。要垂直显示条状,请将相机旋转 90 度。

图 6-5:垂直条视图。图 6-5:水平杆视图。

此代码设置了上一个垂直条状视图。

chart. Begin Update();

chart. View 3 D. Camera. Rotation X = 0;

graph. View 3 D. Camera. Rotation Y = 0;

graph. View 3 D. Camera. Rotation Z = 0;

chart. View 3 D. Camera. View Distance = 170;

chart. View 3 D. Y Axis Primary 3 D. Location = Axis Y Location 3 D. Front Left;

chart. View 3 D. Dimensions. Y = 100;

chart. View 3 D. Dimensions. X = 150;

chart. End Update();

并且代码设置了上图的水平条状视图。

chart. Begin Update();

chart. View 3 D. Dimensions. Y = 150;

chart. View 3 D. Dimensions. X = 100;

chart. View 3 D. Y Axis Primary 3 D. Location = Axis Y Location 3 D. Front Right;

chart. View 3 D. Camera. Rotation X = 0;

graph. View 3 D. Camera. Rotation Y = 0;

chart. View 3 D. Camera. Rotation Z = 90;

chart. View 3 D. Camera. View Distance = 170;

chart. End Update();

6.13 网格模型

Mesh Models(网格模型)列表属性能够将 3D 模型从外部 3D 模型编辑器插入到 Lightning Chart

的 View 3 D 中。这些模型可以使用 OBJ 格式导入,这是 3D 建模应用程序和游戏引擎中常见的一

般格式。要从文件中加载模型的话,请将路径和文件名设置为 Model File Name 属性,或使用 Load

From File 方法。当从文件中加载模型时,如果它们是在相同的路径中,并且 MTL 文件和图像文件

都是可以使用的,那么,纹理填充也会同步加载。想要从串流中加载模型的话,需要使用 Load From

Stream 方法。串流读取方法只能够读取几何和素材,不包括纹理。

一个 Mesh Model 对象的位置遵循它所被分配的 X,Y 和 Z 轴。你可以通过编辑旋转属性来选装模

型。大小可以用 Size 属性进行操作定义,Size 属性是关于原始模型大小的一个合集,包含了能够对

模型大小进行调整的一系列因素。并且能够不遵循轴的范围或 3D 世界维度。

图 6-57。将游轮加载到 Mesh Model 对象中。

请注意!因为 Direct X 11 不支持,所以 Lightning Chart v.7 以上版本不支持 Direct 3 D X 格式

文件(* .x)

6.13.1 加载模型

• 要从文件加载模型,请将路径和文件名设置为 ModelFileName 属性,或使用 LoadFromFile 方

法。从文件加载模型时,纹理填充也会被加载,如果它们存在于相同的路径中,也可以访问 MTL 文

件和图像文件。

• 想要从流加载模型,请使用 LoadFromStream 方法。流读取方法仅读取几何和材料,但不读取

纹理。

• 想要从资源加载模型,请使用 LoadFromResource 方法。

6.13.2 定位,缩放和旋转模型

MeshModel 对象的位置遵循已分配给的 X,Y 和 Z 轴。您可以通过编辑旋转属性来旋转模型。尺

寸可以使用 Size 属性定义,Size 属性是原始模型尺寸的因子集合,不遵循轴范围或 3D 世界尺寸。

6.13.3 启用填充和线框

• 要显示填充,请设置 Fill = True

• 要显示线框,请设置 WireFrame = True,并在 WireFrameLineColor 中设置首选线条颜色。

图 6-58。飞机显示为线框(WireFrameLineColor = Red),并带有默认灰色填充。

6.13.4 定制着色填充

默认情况下,模型使用 OBJ 模型中的颜色进行渲染。要为模型的顶点应用自定义着色,请使用

UpdateFillColors(int [ ] colors))方法。也可以定期调用此方法来应用实时颜色更新。

GeometryConstructed 事件报告顶点在轴值空间中的位置,在 X,Y 和 Z 数组中。当应用着色时,

它 们 是 特 别 需 要 的 通 过 其 他 图 表 对 象 的 空 间 距 离 , 如 数 据 点 。 在 初 始 化 阶 段 订 阅

GeometryConstructed 事件处理程序,然后在不再需要时取消订阅。

UpdateFillColors 需要等距顶点位置(X.Length)的 ARGB 颜色数组。每个顶点有一种颜色

图 6-59。 MeshModel 使用 UpdateFillColors 方法用空间距离着色。

注意:您可以使用 ChartTools.ConvertDataToColorsByFixedIntervalPalette 方法将数据值转换

为颜色(ARGB int),通过您的给定的调色板步骤。

6.13.5 定制着色线框

以类似的方式,您可以使用自定义颜色对线框进行着色。

使 用 GeometryConstructed 事 件 处 理 程 序 来 学 习 所 需 的 颜 色 数 组 长 度 , 并 使 用

UpdateWireframeColors 方法应用新颜色。

图 6-60。 MeshModel 线框利用 UpdateWireframeColors 方法用空间距离着色。

6.13.6 反向顶点卷绕顺序

一些型号采用反向缠绕顺序制成,因此剔除使其不可见。如果您的型号不正确显示,请更改

ClockwiseVertexWinding 设置。

6.14 Volume Models 体积模型

Volume Models(体积模型)是能够通过 Direct Volume Rendering(直接体积渲染)进行体积

数据可视化的工具。Volume Model 将体积数据存储进去,并进行可视化操作。 Lightning Chart

的体积渲染引擎是基于 Volume Ray Casting 的。

图像是通过沿着光线轨迹散布的体积数据经由一定的计算法则产生的,这些体积数据在数据库中分

布。Volume Ray Casting 中硬件加速的简易实现需要生成体积目标对象的边界。通常来说,它们

都是通过多维数据集来表示。隐匿了人工痕迹的高渲染质量和互交替的光线功能使用是这项科技的

主要优势。

Ray Function 功能是算法的核心,为算法提供了非常高的灵活性。该技术非常强大,因为它指定了

数据采样和组合的方式。这个使其成为功能使用的非常有用的工具。

请注意!仅当使用 Direct X 11 渲染器时,Volume Models 才可用。

6.14.1 加载数据

数据导入到 Volume Model 中,有以下几种方法:

• 数据可以作为图像集合一部分的代表,提供至 Data Property 属性中运用。

• 数据可以以各种方式直接运用至 Volume Model 的构造函数中

• 数据可以通过其中一个加载功能,运用至 Volume Model 中

加载功能和构造函数能够作为集合的一部分运用至数据中(和 Data 数据属性的功能相同),或是作

为一个带有路径的字符串,能够放入文件夹中(如.Net 支持的图像)。数据同样能够通过使用我们的

工具创建出来的纹理贴图显示。纹理贴图包含了芯片,其补充同样也需要图片上有关数量的附加信

息。这是高效使用 GPU 输入缓冲区所必需的条件。纹理贴图可以通过 Chart Tools. Create Map

函数进行创建。纹理贴图的直接输入通常被用于针对非常巨大的数据库应用程序开始时的加速。

6.14.2 属性

Volume Model 包含 Lightning Chart 中 3D 对象的典型属性,比如可视化,旋转,大小,位置,

Mouse Interaction 和 Mouse High Light 等。另外,目标也有很多具体属性,它们能够决定体积

渲染引擎如何进行相应处理。

图 6-61 Volume Models 属性列表

6.14.3 光线功能

能够选择 Lightning Chart Volume Rendering Engine(Lightning Chart 体积渲染引擎)中可

用的体素采样和组合的三种方式,其中的任意之一

• Accumulation Ray Function(累积光线功能)能够收集和组合尽可能多的数据。可视化通过这

种技术生产出来的样品看起来像是一种半透明的凝胶。下图显示除了 Accumulation Ray Function

(累积光线功能)这个功能的应用示例,是对于医学数据集的可视化操作。

图 6-62。Accumulation Ray Function(累积光线功能)的医疗应用示例

• 最大强度光线功能仅计算通过光线采集的最亮值。视觉上,它提供了针对 X 射线图像非常相似的

结果。能够得到针对对象的内部结构一些额外的信息。针对超声波干扰仿真和骨架可视化的

Maximum Intensity Ray Function(最大强度射线功能) 应用程序如下所述。

图 6-63。最大强度射线功能应用示例

• Isosurface Ray 功能以像多边形模型的方式绘制模型表面渲染。结果与间接体积渲染产生的结果

非常相似。人物显示人类头骨 CT 可视化的 Isosurface Ray 功能应用示例和水流模拟。

图 6-40 是等值面射线功能示例

6.1.4 阈值

体积渲染引擎能够通过该属性应用阈值范围 VolumeModel。每个颜色通道都有一个单独的边界。

只有当体素才可视化低于高边界,高于所有渠道的低点。可接受的范围是不可视化。该属性将不被鼠

标命中测试予以考虑。

图 6-65 两个不同阈值设置的示例

6.14.5 切片范围

该属性可以删除一部分 VolumeModel。这是一个非常有用的工具,能够用来探索对象的内部结构。

切片范围包含两个边界。他们都是由三个浮点数值表示的。

图 6-66 是累积射线功能和 SliceRange 修改示例

6.14.6 抽样率选项

采样率对最终图像质量非常重要。它沿着光线的轨道采样定义了卷数据集的频率。较高的采样率产

生更好的质量,但需要更多强大的硬件。采样率显着影响累积射线功能。

使用最大强度时,由低采样率产生的人造物往往不太明显。等值面 Ray 功能在非常高的采样率下可

能太过尖锐。

Sampling Rate Options 包含了 Sampling Rate Manager 的几个选项。 Sampling Rate

Manager

需要达到特定硬件的质量和帧速率之间的最佳平衡。

采样率管理器的使用必须由 Enabled 属性打开,否则将会占用 ManualSamplingRate 的值。

SamplingRateRange 定义的边界为 SamplingRateManager。这指定了采样率在多大程度上的

反应速度将会带来的性能变化。 TargetFPS 是一个目标,应由采样率管理员来实现

图 6-67。低采样率示例:32(左),64(右)

6.14.7 平滑度

它能够防止表面太高的脱色。 这个功能能够使表面更平滑,并能够减少一些噪音和其他人工制品。

图 6-68 通过平滑度固定的采样率太高的示例

6.14.8 EmptySpaceSkipping(越过空白区功能)

定义空白分辨率,跳过采样。 EmptySpaceSkipping 的低值(16-32)将会提高性能,但会造成模

型边缘的伪像。

图 6-69 EmptySpaceSkipping 属性值太低示例 Copyright Arction Ltd 2009-2017 201

6.14.9 不透明度

指定累积射线功能行为。低透明度使物体更加透明。

图 6-70 累积射线功能不透明度修改示例:15%(左),45(右)

6.14.10 亮度和暗度

属性定义图像的传递函数。每个变化都有自己的传递函数。它由线性函数表示:output = Brigthness

* input - Darkness

6.15 Rectangle3D 对象

可以在 View3D.Rectangles 列表中添加 Rectangle3D 对象。它们允许在任何位置呈现任何尺寸任何

角度的矩形。矩形也可以通过定义与 View3D.Dimensions 等同的大小来作为平面。

将 3D 世界维度中的尺寸设置为(不是 X,Y 或 Z 轴值)宽度和高度。在中心属性中设置中心点,

定义它为 X,Y 和 Z 轴值。在旋转属性中以度为单位设置旋转。

填充设置可以在“填充”属性中修改。可以使用纯色和位图填充。要使用位图填充,请在 Image 中设

置位图,并启用 UseImage。当设置 Fill.Layout = Stretch 时,位图延伸以填充矩形。通过设置

Fill.Layout = Tile , 将 相 同 的 位 图 平 铺 以 填 充 矩 形 。 可 以 在 Fill.TileCountWidth 和

Fill.TileCountWidth 属性中设置瓦片计数。

图 6-71。 Rectangle3D 对象的属性。

图 6-72。 View3D 中的两个 Rectangle3D 对象。底部的蓝色显示位图填充,其中 Layout = Tile。顶部的红色

旋转矩形配置为半透明的颜色。

6.16 Polygon3D 对象

Polygon3D 对象可以添加到 View3D.Polygons 列表中。它们允许呈现 2D 多边形,伸展到给定的 Y

范围。

在 X 轴和 Z 轴值中定义多边形路径。将路径存储在 Points 数组中。用 YMin 和 YMax 值设置 Y 范

围。

在 Material.Diffuse 中设置主要颜色。 Rotation.X,Rotation.Y 和 Rotation.Z 以度数旋转多边形到

另一个角度。

图 6-73。 Polygon3D 对象的属性。

图 6-74。从 YMin = 0,YMax = 15 的 6 点多边形。

图 6-75。世界人口用 Polygon3D 对象显示。地图数据的每个区域的 Polygon3D 对象。一个国家的人口价值

用于对多边形进行着色并给它设置 Y 的最大值。中国和印度由于人口众多而呈现出半透明的色彩。

6.17 缩放,平移和旋转

使用 ZoomPanOptions 属性来控制缩放,平移和旋转设置。

图 6-76 ZoomPanOptions 属性和子属性,左侧为鼠标按钮/ 中间鼠标按钮动作 /右侧为鼠标按钮动作选项。

可以使用鼠标滚轮或通过触摸屏捏合/扩展进行缩放,也可以通过在选定的 3D 平面上绘制一个框来

进行缩放。可以通过左,中,右鼠标按钮执行平移,框缩放和旋转,而且他们是可配置的。可以为整

个 3D 图形制作平移,或者使主要的轴被调整,但 3D 场景位置保持不变。

6.17.1 鼠标滚轮缩放

要启用鼠标滚轮缩放,请将 MouseWheelZoomEnabled 设置为 True。要禁用缩放,请将其设置为

False。滚动鼠标滚轮来放大和缩小。使用 MouseWheelZoomFactor 来调整每个鼠标滚轮事件应用

的缩放量。

6.17.2 框缩放

要启用框缩放,请将框缩放到鼠标按钮操作属性。例如。 LeftMouseButtonAction = ZoomXZ,然

后框缩放应用于 XZ平面。 Y 维度不受影响。如果要缩放其他平面,请分别设置 ZoomXZ 或 ZoomYZ。

图 6-77 XZ 平面框放大,鼠标按钮释放后进行。 X 轴和 Z 轴范围被修改,Y 轴范围不变。

通过从左到右拖动框来放大。缩放范围应用于与所选平面相关的轴。

通过从右到左拖动框来缩小。通过 BoxZoomOutFactor 中的因素设置应用缩小。缩小显示在框前面

的十字架,禁用该功能,设置 BoxZoomingOutCrossVisible = False。

6.17.3 旋转和平移

可以通过按下指定的鼠标按钮并水平或垂直拖动来旋转 3D 模型。 RotationX,RotationY 和

RotationZ 属性已更新。

当鼠标按钮动作设置为平移,平移更新相机的目标属性。当鼠标按钮动作设置为 PanPrimaryXZ,

PanPrimaryXY 或 PanPrimaryYZ 时,主 X,Y 和 Z 轴范围将被调整。例如,PanPrimaryXZ 通过

鼠标拖动来调整 X 和 Z 轴。次级 X,Y 和 Z 轴不改变。

将 LeftMouseButtonAction / MiddleMouseButtonAction / RightMouseButtonAction 设置为 Pan /

PanPrimaryXZ / PanPrimaryXY / PanPrimaryZ 以启用平移。将其设置为旋转以启用旋转。要禁用

从鼠标左键进行平移和旋转,请将其设置为无。

使用 PanSensitivity 控制应用的平移量。分别使用 RotationSensitivity 来控制旋转量。

6.17.4 使用触摸屏进行缩放

在图表上设置两个手指,并将手指夹紧,缩小或放大。若要禁用使用触摸屏进行缩放,请将

MultiTouchZoomEnabled 设置为 False。

6.17.5 用触摸屏进行平移

把两个手指放在图表上,并将手指移动到相同的方向进行平移。要使用触摸屏禁用平移,请将

MultiTouchPanEnabled 设置为 False。

6.17.6 在轴上使用鼠标滚轮

当鼠标滚轮在一个轴上滚动时,图表会使轴特定的变焦或平移。 WheelAreaThickness 调整鼠标滚

轮敏感区域的宽度,靠近轴。 AxisMouseWheelAction 可用于在缩放和平移之间进行选择。

6.17.7 通过代码进行缩放,旋转和平移

通过使用 RotationX,RotationY 和 RotationZ 属性移动 View3D.Camera 来旋转 3D 视图。当不使

用正摄相机时,可以通过设置 ViewDistance 来进行变焦。使用正摄相机,必须更改尺寸以实现变焦。

通过将相机 Target 设置为 3D 模型坐标来完成平移。

6.18 剪切轴范围内的物体

通过将 ClipContents 属性设置为 True,系列,矩形和网格模型将剪切在轴值范围内。轴总是一个维

度被拉伸,所以当剪切被启用时,它可以防止在墙外渲染。

图 6-78。在左侧,ClipContents 不被使用。系列渲染外轴范围。在右侧,ClipContents 启用,请注意,剪切

不会修改序列数据集本身。裁剪仅在渲染阶段发生。鼠标点击测试也将在墙外生效来进行隐形的剪切对象。

启用剪切时,图表中的所有行都将自动把行宽设置为 1。

6.19 注释

注释集合允许在 3D 场景中添加注释。一般来说,它们与 ViewXY 的注释非常相似(参见 6.19 节),

但 Target 和 Location 控件支持 3D。

图 6-79。 Annotation3D 对象显示 3D 系列的值。十字准线光标可用于辅助目标移动。

目标可以通过鼠标在 3D 中移动。为了协助运动,当鼠标悬停在目标节点上时,注释显示交叉线。将

ShowTargetCrosshair 属性设置为 Auto / On / Off,并调整 TargetCrosshairLineStyle 中的线条样式。

7. ViewPie3D

ViewPie3D 以 3D 形式显示饼图和圆环图。

图 7-1。 ViewPie3D 对象树。

图 7-2。饼图和圆环图表示例。

7.1 属性

通过使用 Style 属性,饼图或圆环图来选择图表类型。使用 ZoomPanOptions 属性树控制缩放,平

移和旋转,与 View3D 非常相似(请参见第 7 章)。

相机属性控制视点,请参见第 7.3 节。可以使用 LightingScheme 属性选择预定义照明设置。使用

Material 属性及其子属性调整一般的 3D 表面外观和光泽度。

使用 DonutInnerPercents 设置圆环内半径,圆角调整边缘圆角半径,StartAngle 旋转饼图,厚度调

整饼图厚度。 当切片的 Explode 为真时,ExplodePercents 调整距爆炸的圆形切片有多远。

TitlesStyle 设置以下之一的饼图文本:标题,值或百分比。将 TitlesNumberFormat 编辑为例如“0.0

TWh”以包括最后的单位。

注释可以以与 View3D 相同的方式使用,但没有轴值绑定属性。见 7.18 节。

7.2 切片

值列表编辑器如下所示:

列表中的每个项目都是 PieSlice 类型。在 Value 属性中编辑数据值。将标题字符串设置为 Title.Text

属性。通过定义 TitleAlignment = Outside,标题在饼图之外绘制。

7.3 按代码设置数据

数据存储在值列表中。 列表中的每个项目都是 PieSlice 类型。

//添加饼图数据

//通过使用 last true 作为最后一个参数,切片将自动添加到 chart.ViewPie3D.Values 集合

PieSlice slice1 =新的 PieSlice(“Hydroelectric”,

Color.FromArgb(150,Color.Aqua),1.0,chart.ViewPie3D,true);

PieSlice slice2 =新的 PieSlice(“Gas”,

Color.FromArgb(150,0,0,0),2.1,chart.ViewPie3D,true);

PieSlice slice3 =新的 PieSlice(“Nuclear”,Color.Lime,1.3,chart.ViewPie3D,

真正);

PieSlice slice4 =新的 PieSlice(“Oil&coal”,Color.FromArgb(240,0,0,0),3.2,

chart.ViewPie3D,true);

PieSlice slice5 =新的 PieSlice(“其他”,Color.Yellow,0.66,

chart.ViewPie3D,true);

slice3.Explode = true;

图 7-3。数据设置为图表。使用 slice3.Explode = true 分隔第三个切片。

7.4 在 2D 中查看饼图

将相机从顶部设置为预定义的相机。

chart.ViewPie3D.Camera.SetPredefinedCamera(PredefinedCamera.PieTop);

图 7-4。数据设置为图表。使用 slice3.Explode = true 分隔第三个切片。

图 7-5。馅饼图显示为 2D,带有预先设定的摄像头。

8. ViewPolar

ViewPolar 允许极地格式的数据可视化。数据点位置由角度值和幅度(ViewXY 中的 X 和振幅 Y 的

比较角度)决定。极地视图具有缩放和平移功能。

图 8-1。 ViewPolar 对象树。

8.1 轴

您可以将极轴定义为“轴”列表属性。在同一图表中可以使用几个轴。通过设置一系列的

AssignPolarAxisIndex 属性,可以为这些轴分配任意序列。轴表示角尺度和幅度刻度。否则,极轴

与 ViewXY 轴非常相似,请参见第 6.2 节。

图 8-2。 AxisPolar 属性树

图 8-3。三轴,第一(红色)在外圈,第二(绿色)在中间,第三(蓝色)最接近中心。可以通过将轴 AngleOrigin

拖动到轴圆上来更改 Axis AngleOrigin。振幅范围可以从轴上拖动来改变。轴振幅范围的最小或最大值可以

通过从轴末端的小笔尖拖动而改变。

8.2 PointLineSeries

PolarView 的 PointLineSeries 可用于绘制一条线,一组点或点线。 LineStyle 和 PointStyle 属性中

有许多线和点样式。

图 8-4。 ViewPolar 的 PointLineSeries 提供了一些数据。线和点都是可见的。

8.2.1 设置数据

此代码表示上图的数据设置。

int iCount = 360;

PolarSeriesPoint [] points = new PolarSeriesPoint [iCount];

Random rnd = new Random();

for(int i = 0; i <iCount; i ++)

{

points [i] .Amplitude = 10.0 + 3.0 * rnd.NextDouble()+ 5.0 *

Math.Cos(AxisPolar.DegreesAsRadians((double)i * 1.0));

points [i] .Angle =(double)i;

}

chart.ViewPolar.PointLineSeries [0] .Points = points;

8.2.2 调色板着色

线条着色支持调色板。

使用 ColorStyle 属性来选择如何应用调色板着色

•LineStyle:没有调色板填充。 LineStyle.Color 属性中设置的颜色适用

•PalettedByAgle:数据点角度字段决定颜色

•PalettedByAmplitude:数据点幅度字段决定颜色

•PalettedByValue:数据点值字段决定颜色

图 8-5。调色板着色应用。

使用 ValueRangePalette 属性定义颜色和值步骤,它的工作方式与 ViewXY 和 View3D 的系列类似。

8.3 区域系列

区域系列允许在填充区域样式的数据可视化。可以使用 LineStyle 属性编辑边缘中的线条样式。填充

可以用 FillColor 属性更改。

图 8-6。 ViewPolar 的 AreaSeries 提供了一些数据。

8.3.1 设置数据

此代码表示上图的数据设置。

int iCount = 360;

PolarSeriesPoint[] points = new PolarSeriesPoint[iCount];

Random rnd = new Random();

for (int i = 0; i < iCount; i++)

{

points [i].Amplitude = 30f + rnd.NextDouble() * 5f *

Math.Sin((double)i / 50f);

points [i].Angle = (double)i;

}

chart.ViewPolar.AreaSeries[0].Points = points;

8.4 扇区

扇区可以被定义为指示一些角度或幅度范围。用 MinAmplitude 和 MaxAmplitude 属性定义幅度范

围。用 BeginAngle 和 EndAngle 定义角度范围。您可以通过鼠标拖动来移动扇区。

图 8-7。几个示例部分被使用。在第一个图中,有一个 PointLineSeries 和扇区。在第二个图中,使用 AreaSeries

进行拨盘,扇区表示 RPM 红区。

8.5 注释

注释与 ViewXY 的注释几乎相似,请参见第 6.19 节,但目标位置是在 Polar 轴值中定义的。按轴值

进行大小调整是不合适的,因此 Sizing 属性只有“Automatic”和“ScreenCoordinates”。

图 8-8。极地视图中的注释。

8.6 标记

标记可以在特定位置使用特定的数据值。通过设置它的 AssignPolarAxisIndex 来指定带有首选轴的

标记。定义 Amplitude 和 AngleValue 属性将其置于适当位置。编辑符号以使您想要的外观,并使用

Label 属性定义文本。

可以用鼠标拖动标记。将 SnapToClosestPoint 设置为 Selected 或 All,以便在拖动时启用最近的数

据点捕捉。选定的轨道只能使用 SetSnapSeries()方法将该标记设置为捕捉到的系列。所有跟踪全

系列。

图 8-9。极地图中的几个标记。

8.7 缩放和平移

缩放可以通过代码,通过设置 ZoomCenter 和 ZoomScale 属性来使用。 ZoomCenter 定义为相对

X-Y 范围。

X = -1:在图表区中心的极面观左边缘

X = 0:在图表区中心的极面观中心

X = 1:在图表区中心的极面观右边缘

Y = -1:在图表区中心的极面观下边缘

Y = 0:在图表区中心的极面观中心

Y = 1:在图表区中心的极面观上边缘

ZoomScale 是放大系数。例如。 2 使得图表在 X 和 Y 方向都比 1 大两倍。

可以在 ZoomPanOptions 属性树中配置鼠标缩放功能。

图 8-10。 ViewPolar 的 ZoomPanOptions。

9. 查看史密斯图表

史密斯图通常用于阻抗测量和阻抗匹配应用中的电子学。

史密斯图表以实数绘制数据(R + jX)。

数据位置通过圆形的真实和虚拟的日志记录表上的角度在 2D 绘图上确定。

图 9-1。 ViewSmith 属性树。

9.1 轴

史密斯圆图只有一个实轴,可以通过扩展属性树轴进行配置,如下图所示。

图 9-2。 AxisSmith 属性树。

大多数属性与 PolarView 的轴和 ViewXY 的轴相同,以自定义并使其更具吸引力,添加了高级属性,

特别是对于 SmithView 调整,如 GridDivCount,GridImg 和 GridReal,RealAxisLineVisible,

ShowAbsoluteValues,ClipGridInsideGraph。

GridDivCount 定义了真实轴上的圆弧网格线和虚数刻度上的对数网格线的数量。

GridImg 和 GridReal 这些属性中的每一个属性都负责在 Real 或 Imaginary 等级上自定义网格线。

另外,有一个属性可以隐藏网格,因此用户可以隐藏其中一个,并继续使用另一个。

图 9-3。真正的网格线是隐藏的,虚线是可见的。

图 9-4。虚拟网格线是隐藏的,实线是可见的。

RealAxisLineVisible 此属性隐藏轴线,请参见图 9-3。

ShowAbsoluteValues 此属性定义哪些值在刻度(绝对或归一化)上。

ClipGridInsideGraph。网格线在图表圈外可见。

图 9-5。 ClipGridInsideGraph = False。

完全定制的史密斯圆图,您可以在下面看到。

图 9-6。定制史密斯图。

9.2 PointLineSeries

SmithView 的 PointLineSeries 也可以用于绘制一条线,一组点或点线,和在 PolarView 中一样。

LineStyle 和 PointStyle 属性中有许多线和点样式。

图 9-2。史密斯数据系列。

9.3 设置数据

下面的代码将添加一组数据点到史密斯圆图的集合。

SmithSeriesPoint[] m_aPoints;

PointLineSeriesSmith Series = new PointLineSeriesSmith(m_chart.ViewSmith, axis);

//Create data for series

m_iCount = 5000;

m_aPoints = new SmithSeriesPoint[m_iCount];

for (int i = 0; i < m_iCount; i++)

{

// Sine from left to right

m_aPoints[i].RealValue = i * (MaxReal / m_iCount);

m_aPoints[i].ImgValue = Math.Sin(0.01 * i)/Math.PI * MaxReal;

}

Series.Points = m_aPoints;

//Add series to chart

m_chart.ViewSmith.PointLineSeries.Add(Series);

9.4 注释

注释与 ViewPolar 的注释相同,请参见第 9.5 节。目标位置是在极坐标轴中定义的。尺寸属性只有

自动和屏幕坐标值。

图 9-4。史密斯视图中的注释。

9.5 标记

标记可以在特定位置使用特定的数据值。可以用鼠标拖动标记。该属性与 ViewPolar 的标记具有相

同的定义,请参见第 9.6 节。

通过设置它的 AssignPolarAxisIndex 来安排带有首选轴的标记。定义 Amplitude 和 AngleValue 属

性将其置于适当位置。编辑符号以使您拥有想要的外观,并使用 Label 属性定义文本。

图 9-5。在史密斯视图中跟踪一系列的标记。

10. 设置色彩主题

使用 ColorTheme 属性设置颜色主题。设置主题将覆盖您创建的图表中的大多数对象颜色。建议首

先设置 ColorTheme,然后再设置不同的对象颜色。

注意!通过设置颜色主题,您将丢失在 Visual Studio 属性网格中手动分配的颜色,而不会发出警告。

图 10-1。不同颜色的主题在使用。在左侧,默认黑色主题与一些自定义颜色。在右边,LightBlue 主题集。

11.滚动条

在 HorizontalScrollBars 或 VerticalScrollbars 集合属性中添加一个或多个滚动条。外观完全可定制,

允许您定义均匀的椭圆形按钮和滚动框。您可以在“按钮”图标中放置一个位图。滚动条可用于所有

视图,但最明显的用法是在 ViewXY 中使用。

图 11-1。一些不同寻常的滚动条

HorizontalScrollBar 可以通过将 Alignment 属性设置为 BelowGraph,AboveGraph 或 GraphCenter

来对齐以适应图形的宽度。通过将 None 设置为“对齐”,可以使用“偏移”属性自由定位滚动条,并使

用“大小”属性对其进行大小调整。通过将对齐属性设置为 LeftToGraph,GraphCenter 或

RightToGraph,VerticalScrollBar 可以对齐以适应图形的高度。通过将 None 设置为“对齐”,可以

使用“偏移”属性自由定位滚动条,并使用“大小”属性对其进行大小调整。

滚动条具有 64 位无符号整数值,而不是通常的 32 位有正负之分的整数值范围。值是当前位置,最

小值是最小范围值,最大值是最大范围值。这样,它可以直接支持高采样频率的长测量。当在测量中

使用 SampleDataSeries 时,将样本索引直接设置为滚动条值。最小值表示第一个样本索引,最大值

表示最后一个样本索引。

当单击滚动按钮时,SmallChange 属性是增量或减量的量。如果 KeyControlEnabled 处于活动状态,

您还可以使用箭头键更改“SmallChange”值。 LargeChange 代替页面更改,当滚动条在滚动条或滚

动按钮之外单击时会发生。使用 PageUp 和 PageDown 键分别更改它们的值。当鼠标滚轮滚动到滚

动条上时,MouseWheelChange 设置更改值。

在你的代码中,使用 Scroll 事件处理程序来响应滚动条的值变化。或者,您可以使用 ValueChanged

事件处理程序。滚动事件处理程序提供了有关滚动操作的更多信息。

12.出口和印刷

12.1 位图图像导出

可以使用 SaveToFile()方法将图表导出为.PNG,.BMP 和.JPG 文件。 SaveToFile(...)方法允

许使用分辨率递减和平滑/反别名选项导出图像文件。要导出到 stream,请改用 SaveToStream()

方法。

12.2 矢量图像导出

ViewXY,ViewPolar 和 ViewSmith 也可以导出为.WMF,.EMF 和.SVG 格式。 不支持 View3D

和 ViewPie3D。 用选定的矢量文件格式来使用 SaveToFile 或 SaveToStream 方法。

注意! 矢量输出被简化,所有的细节,如复杂的点样式,都可以呈现出这样一种简单的颜色和简单

的形状。 矢量输出也可能包含一些位图元素。

12..3 复制到剪贴板

可以通过调用 CopyToClipboard(...)将图表复制到剪贴板。 ViewXY,ViewPolar 和 ViewSmith

可以使用向量格式的 CopyToClipboardAsEmf()方法进行复制。

12.4 打印

调用 PrintPreview()方法打开打印预览对话框或打印()直接打印使用默认设置。

通过手动设置唤醒(...)打印。 打印 ViewXY,ViewPolar 和 ViewSmith 也支持矢量打印。 提供

光栅或矢量格式参数打印方式。

图 12-1。 打印预览对话框。

13.LightningChart 性能

13.1 选择正确的 API 版本

选择 2.1 节中指导的图表版本。若不必要,请不要使用序列数据绑定功能。

13.2 正确设置渲染选项

在特定的应用程序中,LightningChart 的 DirectX9 渲染引擎可能会比 DirectX11 引擎略快。但一般

来说,将 DirectX11 作为渲染器是一个不错的选择。 DirectX11 的外观更加美观,字体质量设置也

很重要。

见 4.6 节。

13.3 更新图表数据或属性

每个属性或序列数据值更改将导致 LightningChart 控件进行重绘。每次重绘都会导致 CPU 和显卡

的开销。如果您以编程方式同时更改多个属性,则在 BeginUpdate()和 EndUpdate()方法调用

之间改变属性,进行分批处理。在调用 EndUpdate()之前,BeginUpdate()会停止绘制控件。如

果您不想使用 EndUpdate()调用重绘控件,请使用 EndUpdate(false)。以下示例演示了如何使电

脑以最小负荷更新图表。

chart.BeginUpdate(); //禁用重绘

//将数据添加到系列

chart.ViewXY.SampleDataSeries [0] .AddSamples(multiChannelSampleStream [0],

false);

chart.ViewXY.SampleDataSeries [1] .AddSamples(multiChannelSampleStream [1],

false);

chart.ViewXY.SampleDataSeries [2] .AddSamples(multiChannelSampleStream [2],

false);

//更新点计数器条形图

Chart.ViewXY.BarSeries [0] .SetValue(0,1,(double)totalPointsCollected,“”,

false);

//更新点计数器标签

chart.Title.Text = totalPointsCollected.ToString();

//将监视滚动位置设置为最新的 x

newestX = firstSampleTimeStamp +(double)(pointsLen - 1)/ genSampFreq;

chart.ViewXY.XAxes [0] .ScrollPosition = newestX;

chart.EndUpdate(); //启用 redraws 与 redraw

13.4 线系提示

- 使用线系时,如果适用于您的应用程序,请使用 SampleDataSeries。线系会以最快的速度进行绘

制,不需要像其它线系类型那样多的内存空间。

- 若点不必须为可见,可将 PointsVisible 属性设置为 false。

- 使用 LineStyle.Width 属性将行宽设置为 1。

- 将 LineStyle.Pattern 设置为 Solid,可使用实线样式。

- 通过设置线系 LineStyle,将 AntiAliasing None 设置为 None,将图表的 AntiAliasLevel 设置为

0,可禁用反锯齿。

- 将序列的 MouseInteraction 设置为 false,可禁用所有鼠标的交互性。或者,将

图表的 MouseInteraction 设置为 false,可禁用整个图表的鼠标交互性。

13.5 强度序列提示

适用于:IntensityGridSeries、IntensityMeshSeries

- 如果数据没有连续更新,则将该序列的 Optimization 属性更改为 StaticData。 如果数据每秒更改

的次数过多,DynamicData 是更好的选择。

- 使用优化:DynamicValuesData 仅更新 Data 数组的 IntensityPoint 结构的 Value 字段并调用

InvalidateValuesDataOnly 方法来更新图表。这样,更新速度更快,因为序列的几何体不会被重新计

算。这仅适用于节点数据 X 和 Y 值保持在同一个位置的应用程序,比如热成像解决方案。

适用于:IntensityGridSeries

- 对于高分辨率热成像应用程序,可为 IntensityGridSeries 启用 PixelRendering。

- 若要快速更新数据集,使用 SetValuesData 和 SetColorsData 方法,替换使用 Data 属性以节省内

存、提高性能。

13.6 3D 曲面序列提示

适用于:SurfaceGridSeries3D、SurfaceMeshSeries3D、WaterfallSeries3D

- 如果数据不进行连续更新,则将该系列的 Optimization 属性更改为 StaticData。 若数据每秒更改

多次,DynamicData 是更好的选择。

- 若不需要光线反射与阴影则可禁用照明,将 SuppressLighting 设置为 false。

- 如 果 使 用 了 轮 廓 线 , 请 使 用 FastColorZones 或 FastPalettedZones 替 换 ColorLines 或

PalettedColorLines。

适用于:SurfaceGridSeries3D

- 使用滚动数据(如 3D 频谱或谱图)、InsertRowBackAndScroll、InsertColumnBackAndScroll 方

法来更新数据以及轴范围。

13.7 地图提示

适用于:ViewXY.Maps

- 当 X 和 Y 轴范围保持一致时,将 ViewXY.Maps.Optimization 设置为 CombinedLayers 并在地图

上显示其它数据。这样,地图层被渲染成相同的缓冲图像,从而达到更有效的渲染。

- 如 果 需 要 通 过 IntensityGrid 或 IntensityMesh 序 列 显 示 地 图 标 题 , 可 将

ViewXY.Maps.Optimization 设置为 None。

13.8 硬件

当获得应用程序获得绝对最大性能时,计算机硬件必须强大。在许多应用程序中,显示适配器的电源

比 CPU 的电源更加重要。

尽量使用现代显示适配器。 DirectX 9.0c 级别的适配器可显示工作进程。'c'来自 DirectX Shader

model 3,这是达到某些效果所必要的。

您可以通过调用 GetRenderDeviceInfo()方法来确定所使用的显示适配器是否不支持某些功能。如

果返回信息状态不支持 FastVertexFormat 时,那对于性能来说是一个坏消息。

14. LightningChart 错误与异常处理

如果您希望将错误作为异常挑选出来,可启用 ThrowChartErrors 属性。或者,为 ChartError 事件定

义一个错误事件处理器。使用枚举的 ErrorType 值与错误的字符串描述,异常会作为 ChartException

对象被挑选出来。ErrorType 也可作为 Information ,这不应该被视为错误。 您可以使用

ChartTools.ErrorTypeToString(...)方法将错误类型转换为字符串。

当与图表出现问题时,请确保您拥有一个工作错误或异常处理器,它会将错误可视化供用户找出原

因。

15. ChartManager 组件

将 ChartManager 控件添加到表单中。然后,将管理员控件分配到所有 LightningChartUltimate 控

件的 ChartManager 属性中。

15.1 图表互操作,拖放

ChartManager 控件可用于协调几个 LightningChartUltimate 控件的互操作。它可在 WinForms 中

实现从图表到另一个图表的序列拖放操作。由于某些技术原因 WPF 不可用。

序列具有 DisableDragToAnotherAxis 属性并且必须将其设置为 False 以启用拖动功能。默认情况下

为 True。

Axes 具有 AllowSeriesDragDrop 属性,可以将其设置为 False,防止在特定的轴上拖动。其默认值

为 True。

将鼠标移到要拖动的序列上,按下鼠标左键开始拖动。

在 Y 轴上拖动:将序列拖动到另一个图表的 Y 轴上并释放按钮。其它图表拥有序列的所有权并将序

列分配至目标 Y 轴。它还会为序列分配第一个 X 轴。

在 X 轴上拖拽:将序列拖动到其它图表的 X 轴上并释放按钮。其它图表拥有该序列的所有权并将该

序列分至给目标 X 轴,也会为序列分配第一个 Y 轴。

15.2 内存管理增强

在某些极端的实时监控应用程序中,如果应用程序以极高的 CPU 负载运行,.NET 垃圾回收器不会

很好地释放未使用的内存。垃圾收集器一次释放所有内存,在图表更新中会出现可见的“冻结”或

“暂停”。为了使图表更新更流畅,可启用 ChartManager 的 MemoryGarbageCollecting 属性。通过

这种方式,不论 CPU 负载如何,单线程会更多地用于释放内存。当线程运行稍微对 CPU 造成负荷

时,推荐将 MemoryGarbageCollecting 与多核处理器共同使用。

16. SignalGenerator 组件

SignalGenerator 组件可用于生成实时信号。信号由不同波形的和产生。一些 SignalGenerator 组件

可用主从关系连接在一起,进行同步多通道输出。使用 LightningChart 开发信号监控或数据采集软

件时,SignalGenerator 非常有用。

图 16-1 选中正弦页面的 SignalGenerator 组件

波形可分为以下种类:正弦波、方波、三角波、噪声波、频率扫描、振幅扫描。您会注意到组件中的

标签页。在正弦页面中,您可以添加正弦波形。在方波页面中,您可以添加方波。在三角波形页面中,

您可以添加三角波形。在噪声波页面中,您可以添加随机噪声波形。在频率扫描页面中,您可以添加

频率扫描。在振幅扫描页面中,您可以添加幅度扫描。在全部页面中,您可以在堆叠视图中设置所有

波形。

16.1 采样频率、输出间隔、系数

采样频率表示每秒产生多少个信号点。较高的采样频率会产生更加准确的信号,但增加了数据流与

经费的开销。采样频率较高时,可以显示包含高频的信号。采样频率必须高出最大信号频率的两倍,

才能符合 Nyquist 抽样定理。

输出间隔设置了计算输出采样的首选间隔,单位为毫秒。例如,如果设置为 100,那么每 100 ms 周

期后,您每秒将获得示例 10 倍的样本。在这里使用较低的值会

实时监控输出更加顺利。请注意,输出间隔并不准确,可能会随计算机负载而变化。如果周期比预期

时间长,输出数据流将自动提供更多样本。使用高数据率,即使电脑开销较大的情况下,数据流也会

成形。

系数与带有被选数值的输出样本相乘。例如,为了产生 mV 信号而非 V 信号,将 Factor 设置为 1E-

3。

16.2 正弦波形

正弦波形由振幅,偏移,频率和延迟参数构成。振幅是零电平的最大电压差。

注意,总范围是双极的。 峰间值将为 2 *振幅。偏移为信号中的直流电平,正值将信号向上移动,

负值将其移动到值范围内。 频率以赫兹表示信号周期数。 每秒一个周期是 1 赫兹的频率。 以毫秒

为单位延迟信号。

具有以下设置的简单正弦波形产生如下图所示的信号。

图 16-2 一个正弦波形信号。

相应地,具有以下设置的两个正弦波形产生如下图所示的信号

图 0-3。 两个正弦波形信号

16.3 方波

方波形还有一个参数-对称性。对称范围为 0 ... 1。对称性指示信号处于较高状态的时长,与周期周

期相关。对称度为 0.5 时,信号的高低状态的长度相等。

具有以下设置的方波形产生如下所示的信号

图 0-4 方波形信号,对称性为 0.8

16.4 三角波形

三角波形也有对称参数,控制边与三角形倾斜度。0.5 是对称三角形的值;值低于 0.5 时偏左,高于

0.5 时偏右。

具有以下设置的三角波形会产生如下所示的信号

图 15-4 三角波形信号,对称性为 0.7。

16.5 噪声波形

噪声波形是随机产生的信号。点在-Amplitude 和+ Amplitude 之间随机。

具有以下设置的噪声波形产生如下所示的信号

图 15-6 噪声波形信号

16.6 频率扫描

在给定的时间段内,频率正弦扫描从频率 1 到频率 2,幅度恒定。使用幅度设置恒定幅度,

FrequencyFrom 设置开始频率,FrequencyTo 设置结束频率,DurationMs 设置持续时间(以毫秒为

单位)。

图 15-6 频率扫描

16.7 振幅扫描

振幅正弦扫描在给定时间段内从幅度 1 到幅度 2,频率恒定。使用频率设置恒定频率,AmplitudeFrom

设置开始幅度,AmplitudeTo 设置结束幅度和 DurationMs 设置持续时间(以毫秒为单位)。

图 15-6 振幅扫描

16.8 开始与停止

通过按开始按钮或调用启动方法启动发生器。按停止按钮或调用 StopRequest 方法停止发生器。停

止的事件将在停止完成时触发。

16.9 具有主从配置的多通道发生器

几个 SignalGenerator 组件可以连接在一起产生同步的多通道输出。

主发电机控制所有发生器的采样频率、起动、停止、输出。主发生器在输出数据流中产生第一个通道。

次发生器通过分配其 MasterGenerator 属性连接到主发生器。 自由定义信号波形。 次发生器由主

发生器启动、停止。次发生器以连接顺序获取输出数据流通道索引。 在启动主发生器之前,必须连

接次发生器。

16.10 输出数据流

输出是使用 NewSignalPointsGenerated 事件处理程序获得的二维数组。 事件在每个输出间隔之后

会提高。

事件处理程序获取对样本数组的参考,接收此轮的第一个样本包的时间戳。样本数组的第一维代表

通道以及每个通道的第二个维度样本。所有通道具有相同的样品计数。

事件活动如下:

private void m_signalGenerator_DataGenerated(DataGeneratedEventArgs args)

要调查数据流的通道数,设置第一维的长度 channelCount = args.Samples.Length;

获取通道的样本数

sampleBundleCount = args.Samples [0] .Length;

要将此数据直接转到 LightningChart 的 SampleDataSeries 列表并更新实时监控滚动位置,使用以

下代码:

private void m_signalGenerator_DataGenerated(DataGeneratedEventArgs args)

{

chart.BeginUpdate();

int channelIndex = 0;

int sampleBundleCount = args.Samples[0].Length;

foreach (SampleDataSeries series in chart.ViewXY.SampleDataSeries)

{

series.AddSamples(args.Samples[channelIndex++], false);

}

//设置最新的滚动为 x

newestX = args.FirstSampleTimeStamp + (double)(sampleBundleCount - 1) /

generatorSamplingFrequency;

chart.ViewXY.XAxes[0].ScrollPosition = newestX;

chart.EndUpdate();

}

注意,使用 args.Samples [0]可以访问主生成器的数据。args.Samples [1]允许访问第一个次生成器

数据,args.Samples [2]至第二个次生成器等等。

17. SignalReader 组件

SignalReader组件允许从信号源文件中读取数据,并以选定的速率重放录音。SignalReader输出数据

流格式与SignalGenerator类似,请参见第1.10章。

SignalReader组件目前支持两种格式,wav和sid。

17.1 主要特性

FileName定义要打开的文件,如“c:\\ wavedata \\ audioclip1.wav”

Factor设定输出因子。原始信号样本乘以该值。

OutputInterval类似于SignalGenerator的属性,请参见第17.1节。

当文件终点达到时,IsLooping允许文件读取跳转到文件的开头。

打开文件后,可以使用以下属性来获取文件的信息:

ChannelCount: 文件的通道数。

SamplingFrequency: 采样频率(Hz)。

FileSize: 文件大小(以字节计)。

Length: 每个频道的采样计数。所有信号文件格式可能不准确

IsReaderEnabled: 状态命令是组件启动和读取数据。如果循环设置为假并且文件终点到达,

IsReaderEnabled将更改为false。

17.2 快速打开文件进行重放

调用OpenFile(...)方法提供的文件名。文件名必须有支持格式的扩展名。然后调用Start()方法

signalReader.OpenFile(“C:\\ wavedata\\ audioclip1.wav”);

signalReader.Start();

它将开始重放 PCM 格式的 WAV 文件。

可以通过调用 StopRequest()方法来停止重放。

图 17-1 SignalReader 读取一个 wav 文件,LightningChart SampleDataSeries 绘制信号。光标线用于标记当前

读取位置和 X 轴滚动位置。

18. AudioInput 组件

AudioInput组件允许用户从Windows的录制设备捕获到System.Double值的信号。这些值可以在

LightningChart Ultimate上呈现,发送到AudioOutput组件,并保存到文件等...

18.1 性能

BitsPerSample——获取或设置每个样本分配多少位。支持的值为8和16。如果使用其他值,则使用

16。IsInputEnabled为假时可设置。

IsInputEnabled——获取或设置此实例的状态(即启动或停止它)。将此属性设置为真与调用Start方

法相同,其中假与调用Stop方法相同。

IsStereo——获取或设置是使用两个通道(立体声)还是仅使用一个(单声道)。IsInputEnabled为

假时可设置。

LicenseKey——以常规或加密格式获取或设置许可证密钥。

RecordingDevice——获取或设置当前录制设备。IsInputEnabled为假时可设置。通过将此属性设置

为空,使用Windows的默认记录设备。

SamplesPerSecond ——获取或设置采样频率。IsInputEnabled为假时可设置。

ThreadInvoking——获取或设置此实例是否自动将其事件同步到主UI线程,因此无需在访客端调用

Control.Invoke方法。

Volume——获取或设置音量(0-100)。IsInputEnabled为假时可设置。

18.2 方法

GetRecordingDevices ——使用此静态方法获取可用Windows录制设备的列表。

RequestStop ——将此AudioInput实例发出信号以停止。退出此方法后,Stop不会立即出现。通过

订阅Stopped事件,当所有事情都停止时,用户将会被通知。

Start ——Start 从选定的录音设备中读取音频。内部线程即将开始时触发 Started 事件。

18.3 事件

DataGenerated —— 生 成 一 组 新 的 音 频 数 据 时 发 生 。 可 以 从 作 为 参 数 提 供 的

DataGeneratedEventArgs对象读取数据及其第一个样本的时间戳。

Started –音频输入开始时发生。StartedEventArgs对象作为参数被提供,包含三个公共字段:

BitsPerSample、ChannelCount和SamplesPerSecond。

Stopped –音频输入停止时发生。

18.4 用法 (WinForms)

本章介绍了AudioInput类的WinForms版本的用法。WPF版本将在第17.5章中处进行介绍。

18.4.1 创建

通过在源代码中手动创建一个新的AudioInput实例,或者将其从Visual Studio的工具箱拖放到您的

表单、用户控件等。

如果您不需要显示GUI(即,您使用自己的或您的源代码控制AudioInput对象),则将Visible属性

设置为假。始终建议使用父属性进行设置,以便在处理父控件时,AudioInput实例被自动处置。如果

没有父级,那么在完成AudioInput实例后,不要忘记调用Dispose方法。请注意,如果您通过Visual

Studio的工具箱创建一个新的AudioInput实例,则Parent将自动设置。

建议设置LicenseKey属性,以便您的AudioInput实例使用显式许可密钥,而不是尝试从Windows注

册表中找到一个。请注意,如果您使用试用版/许可证,则可以将LicenseKey属性保留为其默认值。

18.4.2 事件处理

要从AudioInput实例获取新的样本,您需要至少订阅DataGenerated事件。当DataGenerated事件触

发时,您可以从作为参数提供的DataGeneratedEventArgs对象获取新样本和第一个采样时间戳。

如果想知道AudioInput实例何时开始其音频采样任务,您可以订阅Started事件。 您可以获取每个样

本的位数,是音频单声道还是立体声,并且从作为参数提供的StartedEventArgs对象每秒钟生成多少

个样本。

如果您想知道AudioInput实例何时停止,您可以订阅Stopped事件。Stopped事件没有参数,它唯一

的目的是告诉用户什么时候停止。

18.4.3 配置

如果要使AudioInput实例自动将其事件同步到主UI线程,设置ThreadInvoking为真,但请确保

AudioInput实例具有有效的父级控件。

ThreadInvoking默认为假,所以如果您在DataGenerated事件处理程序中更新GUI,请不要忘记调用

Control.Invoke方法。

如果要使用其他Windows的录制设备而不是默认录像设备,请设置RecordingDevice属性。您可以使

用AudioInput的静态方法GetRecordingDevices获取所有可用的录制设备。

可以通过Volume属性来控制音量。有效值为0到100,其中0表示静音,100为最大音量。当AudioInput

实例启用(即生成样本)时,您也可以设置音量。

如果要使用差异采样率而非默认采样率(44100 Hz),请设置SamplesPerSecond属性。在启用

AudioInput实例时设置此属性不起作用。

使用单声道音频而非立体声(默认),请将IsStereo设置为假。在启用AudioInput实例时设置此属性

不起作用。

如果您更喜欢每个采样8位而不是16位(默认值),请设置BitsPerSample属性8。有效值为8和16(默

认值)。这种限制来自PCM波形。在启用AudioInput实例时设置此属性不起作用。

18.4.4 启动

启动AudioInput实例时,您可以设置IsInputEnabled属性为真或调用Start方法。当DataGenerated事

件为您提供一组新的音频样本时,您可以使用LightningChartUltimate实例渲染它们。

18.4.5 停止

若想停止AudioInput实例,设置IsInputEnabled为假或调用RequestStop方法。RequestStop方法不会

立即停止。它只会给AudioInput实例发送信号以尽快停止。如果您需要等到一切都停止,那么等待

Stopped事件被触发。你需要订阅它。

18.5 用法 (WPF)

本章介绍AudioInput类的WPF版本的用法。AudioInput的WPF版本工作原理与WinForms版本基本

相同。 但是,有一些WPF用户需要了解的内容,本章将介绍这些内容。

18.5.1 创建

在代码隐藏中手动创建一个新的AudioInput实例,或者通过将其从Visual Studio的工具箱拖放到您

的窗口、用户控件等上。

如果您不需要显示 GUI ( 即您使用自己的或 您的 源代码控制 AudioInput 对 象),则使用

Arction.WPF.SignalTools命名空间中的AudioInput。这个特定的类派生自FrameworkElement,它

的所有属性都是可绑定的。为方便起见,在安装LightningChart Ultimate SDK之后,还可以从Visual

Studio的工具箱中找到Arction.WPF.SignalTools.AudioInput,以便将其放在Windows、用户控件等

上,然后将元素移动到XAML代码所需的位置。必要的XML命名空间将以这种方式自动添加。

AudioInput还有一个现成的GUI。可以从Arction.WPF.SignalTools.GUI命名空间中找到它。您也可

以在安装LightningChart Ultimate SDK后从Visual Studio的工具箱中找到它。请注意,这只是

Arction.WPF.SignalTools.AudioInput 类 的 GUI , 但 它 包 含 一 个

Arction.WPF.SignalTools.AudioInput类的实例,您可以通过Input属性访问它。即您不必创建一个

新的单独的Arction.WPF.SignalTools.AudioInput实例。

建议设置LicenseKey属性,以便您的AudioInput实例使用显式许可证密钥,而不用试图从Windows

注册表中找到一个。请注意,如果您使用试用版/许可证,则可以将LicenseKey属性保留为其默认值。

19. AudioOutput 组件

AudioOutput组件允许用户将System.Double信号数据转换为音频流,然后通过扬声器播放,或发送

到声音设备的Line-out接口。

19.1 属性

平衡 - 获取或设置音频播放平衡。有效值介于-100 到 100. -100 之间,这意味着音频只能通过左侧

扬声器播放。 0 表示两个扬声器输出音频。 100 表示该音频仅通过右侧扬声器播放。

BitsPerSample - 获取或设置每个样本分配多少比特。支持的数值为 8 和 16。如果使用其他值,16

则会被取代。 当 IsOutputEnabled 为 false 值时,是可设置的状态。

IsOutputEnabled - 获取或设置此实例的状态(即启动或停止)。设置此属性为 true 值与调用 Start

的方法相同,其中 false 值与调用 Stop 的方法相同。

IsStereo - 获取或设置是使用两个通道(立体声)还是仅使用一个(单声道)。这是可以进行设定的。

IsOutputEnabled 的值为 false。

LicenseKey - 以常规或加密格式,获取或设置许可证密钥字符串。

PlaybackDevice - 获取或设置当前播放设备。 IsOutputEnabled 的值为 false 时可进行设置。

通过将此属性的值设置为 NULL,则能够使用 Windows 的默认播放设备。

SamplesPerSecond - 获取或设置采样频率。 IsOutputEnabled 的值为 false 时可设置。

音量 - 获取或设置音量(0-100)。 IsOutputEnabled 的值为 false 时可设置。

20. 频谱计算器组件

频谱计算器组件能够在时域和频域之间进行转换。

图 20-1。源信号数据(顶部)转换为频域(底部)的示例。信号采样频率= 300

Hz,因此频率刻度为 300/2 = 150 Hz。强正弦基线为 10 Hz(10 周期/秒)。将 100Hz 的较小信

号作为一种噪音的方式进行添加。在功率谱中能够发现两个尖峰。

我们有以下公共方法供您参考:

• CalculateForward(double [] samples,out double [] fftData):将时域信号数据转换为频

域使用 FFT。fftData 的输出值还包含负值。输入和输出数据数组的长度必须相等。长度是数据的分

辨率,从 0 Hz 扩展到采样频率/ 2,其中输出值间隔相等。

• CalculateForward(float [] samples,out float [] fftData):与以前的方法一样,但是仅针对

对于单个精度浮点值。

• CalculateBackward(double [] fftData,out double [] samples):将频域数据转换为

时域。从 FFT 数据中获取信号样本,样本计数等于输入 fftData 的长度值。

• CalculateBackward(float [] fftData,out float [] samples:像以前的方法一样,但是是针对

单个精度浮点值而言。

• PowerSpectrum(double [] samples,out double [] fftData):用于计算信号的功率谱数据。

与 CalculateForward 相同,但具有绝对的输出值。

• PowerSpectrum(float [] samples,out float [] fftData):与以前的方法一样,但是是针对单

个精度浮点值而言。

• PowerSpectrumOverlapped ( double [] samples , int fftWindowLength , double

overlapPercent,outdouble [] fftData,out int processedSampleCount):通过移动来计算

功率谱。从计算窗口内源信号采样数据,并以重叠的百分比表示。信号数据必须比给定的 FFT 窗口

长。输出 FFT 数据是 fftWindowLength 的长度,所以不一定要与源数据的长度相同。输出的数据

为绝对值。

• PowerSpectrumOverlapped ( float [] samples , int fftWindowLength , double

overlapPercent,outfloat [] fftData,out int processedSampleCount)

22.在 C ++应用程序中使用 LightningChart

LightningChart 是一个.NET 库,可以十分流利地使用 C#和 VB.NET 语言。但它可在 C ++ Win32

的应用程序中使用,包括 MFC 应用程序。使用 LightningChart 的应用程序必须使用 Common

Language Runtime Support(/ clr)选项。您可以从 Project(项目) -> Properties menu (属

性菜单)->Configuration Properties(配置属性) ->General page(常规界面)中打开。

图 22-1 Visual Studio 2010 中的 C ++应用程序属性页面。公共语言运行时支持的设定。

.NET 库现在可以通过 C ++ / CLI 语行进行访问,C ++是使用.NET 扩展的。

在属性页面,公共属性,框架和引用中添加.NET 程序集引用。

添加以下.NET 程序集:

- Arction. Win Forms. Charting. Lightning Chart Ultimate(在安装文件夹或安装文件夹中找

到 - >LibNET4)

- 系统(框架装配)

- System. Windows. Forms(框架程序集)

图 16-2 添加.NET 引用。

在配置属性的 C / C ++页面,能够修改解决#using 引用路径定位到的位置。

图 21-3 设置“解析#参考”路径。

在您的包含行之后包括库和相关命名空间,如下所示:

#include “s t d a f x . h”

#include <s t d l I b . h>

...

//包含对象 DLL 和相关命名空间

#include“Arction.WinForms.Charting.LightningChartUltimate.dll”

使用命名空间 Arction :: WinForms :: Charting;

使用命名空间 Arction :: WinForms :: Charting :: Axes;

使用命名空间 Arction :: WinForms :: Charting :: Series X Y;

声明一个类来存储全局.NET 托管变量:

//“全局管理变量”

ref 类 Global Objects

{

上市:

static Arction :: WinForms :: Charting :: Lightning Chart Ultimate ^ chart;

};

在其中创建一个这个类的对象和 Lightning Chart Ultimate 对象,例如在 InitInstance 中

功能:

BOOL InitInstance(HINSTANCE hInstance,int n Cmd Show)

{

HWND h W n d;

H I n s t = h I n s t a n c e; //将实例句柄存储在我们的全局变量中

H W n d = Create Window( s z Window Class,s z Title,WS_OVERLAPPEDWINDOW,

260 LightningChart Ultimate SDK 用户手册,版本 8.0.2

CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,h I n s t a n c e,NULL);

如果(!h W n d)

{

返回 FALSE;

}

Create Chart(HWND); //图表创建功能

Show Window(h W n d ,n C m d S h o w);

Update Window(HWND);

返回 TRUE;

}

图表创建方法可以如下所示:

//创建一个 LightningChartUltimate 对象并将其放在父窗口中

void Create Chart(HWND h w n d Parent)

{

Global Objects ^ go = g c n e w Global Objects();

go-> chart = g c n e w LightningChart Ultimate(“/ *在许可证管理器中创建密钥

程序”);

Lightning Chart Ultimate ^ chart = go-> chart;

//禁止每个属性更改的重绘

chart->的 Begin Update();

//通过窗口句柄设置父窗口

chart-> Set Parent Window((System :: I n t P t r )h w n d Parent);

//删除现有的系列

chart-> View X Y-> Point Line Series->清除();

//创建新系列

Point Line Series ^ series = g c n e w Point Line Series(chart-> View X Y,

chart-> View X Y-> X Axes [0],

chart-> View X Y-> Y Axes [0]);

const I n t Point Count = 10;

//创建 Series Point 数组

array <Series Point> ^ data =

g c n e w array <Series Point>(Point Count);

//填写数组

double y Values [Point Count] = {0.0,5.0,4.0,3.0,8.0,10.0,9.0,8.0,3.0,2.0};

for(I n t i = 0; i <Point Count; i ++)

{

数据[i] .X = i + 1;

data [i] .Y = y Values [i];

}

//将点添加到系列

系列 - > Add Points(数据,假);

//将该系列本身添加到图表的 Point Line Series 集合中

chart-> View X Y-> Point Line Series->添加(系列);

//将轴范围适用于数据分配.Copyright Arction Ltd 2009-2017 261

chart-> View X Y-> Fit View();

//允许重绘,更新图表

chart-> End Update();

}

添加处理 WM_SIZE 消息(窗口大小调整):

LRESULT CALLBACK WndProc(HWND hWnd,UINT 消息,WPARAM wParam,LPARAM

lParam)

{

int wmId,wmEvent;

PAINTSTRUCT ps;

HDC hdc

开关(讯息)

{

案例 WM_SIZE:

{

GlobalObjects ^ go = gcnew GlobalObjects();

if(go-> chart!= nullptr)

go-> chart-> SetBounds(0,0,0xFFFF&lParam,0xFFFF&(lParam >> 16));

打破;

}

}

返回 0;

}

此示例的结果应用程序在编译和执行时如下所示:

图 16-4 执行实例的示例。

22. 处理模式

22.1 以代码形式创建的图表

22.1.1 图表处理方法

当您在代码中创建图表时,不再需要该图表,请调用

chart. Dispose();

释放图表及其所有对象的内存,如系列,标记,调色板步骤...

22.1.2 对象处理方法

如果您即时创建对象,并希望在退出应用程序或处理之前释放其内存

整个图表[with chart . Dispose()],从被添加到的集合中删除对象,然后为对象调用 Dispose()。

例如。从 chart . View X Y. Point Line Series 集合中处理一个系列:

//做清理...删除和处理 3 个步骤

_chart. Begin Update();

List <Point Line Series> list Series To Be Removed = new List <Point Line Series>();

List Series To Be Removed . Add(_chart . View X Y .Point Line Series [1]);

List Series To Be Removed . Add(_chart . View X Y . Point Line Series [3]);

List Series To Be Removed . Add(_chart . View X Y . Point Line Series [4]);

foreach(Point Line Series p l s in list Series To Be Removed)

{

_chart . View X Y . Point Line Series . Remove(PLS);

pls.Dispose();

}

_chart.EndUpdate();

当不再需要 LightingChart 的对象时,及时处理它们以防止内存泄漏是明智的选择。

23. 对象模型说明

23.1 在其他对象之间共享对象

LightningChart 对象模型是有目录可循的。每个分类都有其主对象和子对象列表。有了目录的帮助,

子对象能够实时通知主对象它的变化,以便主对象可以分别对其进行响应,在达到根节点,也就是

LightningChartUltimate 本身之前,主对象能够对于自身的变化进行了解,因此知道应该如何应对。

对象还参考了他们的非管理对象,如 GPU 资源、屏幕或闪烁的问题。

在同一个图表或其他图表实例中的其他对象之间共享对象是被禁止的。

示例 1 的使用错误:

AnnotationXY annotation1 = new Annotation();

chart.ViewXY.Annotations.Add(annotation1);

AnnotationXY annotation2 = new Annotation();

annotation2.Fill = annotation1.Fill;

chart.ViewXY.Annotations.Add(annotation2);

这是错误的,因为相同的 Fill 对象不能在多个对象之间共享。

正确的方法:仅复制属性(如果它们是 ValueType)(例如,整数,双倍,彩色)

示例 2 使用错误:

SeriesEventMarker marker = new SeriesEventMarker();

chart.ViewXY.PointLineSeries [0] .SeriesEventMarkers.Add(标记);

chart.ViewXY.PointLineSeries [1] .SeriesEventMarkers.Add(标记);

不应将相同的对象添加到多个集合的集合中。

正确方法:为两个系列创建自己的标记。

24.部署

24.1 参考的程序集

使用您的可执行文件,生成 Arction dlls。然后使用您的可执行文件生成全局程序集缓存或其他文件

夹。在这些文件夹中,.NET 程序集解析系统能够找到上述的的 Arction dlls。

LightningChart 同样也支持 ClickOnce 部署

WinForms:

• Arction.WinForms.Charting.LightningChartUltimate.dll

• Arction.Licensing.dll

• Arction.DirectX.dll

• Arction.RenderingDefinitions.dll

• Arction.RenderingEngine.dll

• Arction.RenderingEngine9.dll

• Arction.RenderingEngine11.dll

• Arction.DirectXInit.dll

• Arction.DirectXFiles.dll

如果使用 SignalTools 的话:

• Arction.WinForms.SignalProcessing.SignalTools.dll

• Arction.MathCore.dll

WPF:

• Arction.Wpf.Charting.LightningChartUltimate.dll(如果使用不可绑定的 WPF 图表)

•Arction.Wpf.SemibindableCharting.LightningChartUltimate.dll(如果使用半可绑定的 WPF

图表)

• Arction.Wpf.BindableCharting.LightningChartUltimate.dll(如果使用完全可绑定的 WPF 图

表)

• Arction.Licensing.dll

• Arction.DirectX.dll

• Arction.RenderingDefinitions.dll

• Arction.RenderingEngine.dll

• Arction.RenderingEngine9.dll

• Arction.RenderingEngine11.dll

• Arction.DirectXInit.dll

• Arction.DirectXFiles.dll

如果使用 SignalTools 的话

• Arction.Wpf.SignalProcessing.SignalTools.dll

• Arction.MathCore.dll266

24.2 许可证密钥

一定记住要为所有组件分配静态的 Set Deployment Key。否则的话,图表就会进入试用模式,而

且使用期限只有 30 天。有关许可证密钥管理的部分内容,请参阅部分 4。

25.故障排除

25.1 Web 支持

有关常见问题,请参见 www.arction.com/support。

讨论论坛相关内容可点击 http://www.arction.com/forum

25.2 在虚拟机平台上的运行

LightningChart 针对不能够访问图形硬件的系统配备有 DirectX10 / 11 WARP 的渲染程序。在

CPU 中进行 WARP 渲染,和硬件渲染相比,性能会相应降低。

这需要一个支持 DirectX11 的操作系统。

对于不支持 DirectX11 的系统,Lightning 可以退回到 DirectX9 Reference Rasterizer 模式。

性能相对比较贫乏,只是 WARP 的一小部分性能而已。

对于自动回退到 WARP 和 DirectX9 的情况,请将 RenderDevice 设置为 Auto,AutoPreferD9

或 AutoPreferD11。

25.3 信用证

26.3.1 Intel Math Kernel 素材库

LightningChart Ultimate SDK 在某些地方使用 Intel Math Kernel Library,如 Fast Fourier

Transform 方法。动作程序集包含从该库中构建的一些本机 DLL 文件。 Arction Ltd 获得许可

,能够使用英特尔数学核心库。

25.3.2 开源项目

我们感谢以下开源项目和材料提供者:

.NET 的 DirectX 库

LightningChart 使用具有指令扩展名的 SharpDX-derived DirectX .NET DLL,

http://www.sharpdx.org/

地图来源

LightningChart Ultimate 地图已从地图提供商导入如下:

世界,北美,欧洲:自然地球,http://www.naturalearthdata.com/

澳大利亚:澳大利亚统计局 http://www.abs.gov.au/

美国道路:美国国家图集 http://www.nationalatlas.gov

可缩放矢量图形的输出

LightningChart SVG 出口正在使用 RiskCare 有限公司的部分 SvgNet 项目代码

加密项目

一些加密程序是 RSA 和 Bruce Schneier 的算法导数。

多项式回归

多项式回归计算代码部分基于 Math.Net 库,

http://www.mathdotnet.com/