本帖最后由 .net_wang 于 2021-8-10 10:22 编辑
持续的系列渲染图层
演示示例: Lines / points; Areas /high-lows
PersistentSeriesRenderingLayer 可用于非常快速渲染重复的线/点数据,或在相同的X和Y值域内反复绘制的线/点/高低/区域填充数据。
例如,看下FFT监控的情况:每秒钟收到20个新的数据条。最新的数据应该与所有的历史轨迹一样可见。但是监控会持续数小时。通过用常规渲染法来渲染这种数据,每小时则需要20 * 60 * 60 = 72000 个新线条系列。计算机可能会在还没监控1小时便耗尽内存。可以肯定的是渲染会变得非常慢,以至于再不能起作用。
PersistentSeriesRenderingLayer 是一种位图,可循序渐进地添加渲染数据。如果没有清除指令,可以一直存储图形。这样,每一轮渲染,图层上只会渲染一个系列,随后进行屏幕上的图层渲染。 CPU负载或内存占用不会增加。如果现有的数据应该逐渐消失,可以通过增加位图像素的透明度来实现。
根据需要可以创建任意数量的PersistentSeriesRenderingLayer对象,在每一轮更新中,任何的系列量都可以在它们每个上面渲染。
图:持续性图层可显示历史轨迹(绿色)。其上方显示的是一个普通的 PointLineSeries(红色)
图:持续性图层可显示历史轨迹(绿色)。在更新渲染层中的新数据之前调用MultiplyAlpha方法,使最早的轨迹消失。
创建图层
PersistentSeriesRenderingLayer 不是ViewXY的子属性,并且不能用Visual Studio的属性网格来添加。PersistentSeriesRenderingLayer 对象必须在代码中创建。创建方法如下:
[C#] 纯文本查看 复制代码 using Arction.[edition].Charting.Views.ViewXY;
PersistentSeriesRenderingLayer layer = new PersistentSeriesRenderingLayer (m_chart.ViewXY, m_chart.ViewXY.XAxes[0]);
通过提供ViewXY 对象作为参数,这可绑定在 ViewXY 中的图层。提供相同的XAxis对象,该对象与在其上渲染的系列一起使用。
多个图层将按照图表的创建顺序渲染。
清除图层
layer.Clear()可清除图层,并用ARGB=(0,255,255,255)对颜色初始化。
layer.Clear(Color color)用给定的颜色来清除图层。在大多数情况下,设置与在背景中使用的同样颜色非常有用,但要设置其A = 0。 若背景为黑色的,则使用layer.Clear(Color.FromArgb(0,0,0,0));
调整图层透明度
MultiplyAlpha(value)可让图层更透明或不透明。将图层中每个像素单独相乘。倍增操作会分别对图层中的每一个像素起作用。
给定值 < 1, 透明度增加(衰减图层)
给定值> 1, 不透明度增加(让图层的可见性更加)
值为1时无效。
例如, MultiplyAlpha(0.8)即设置透明度为当前透明度的80%。MultiplyAlpha(2)则调整其为 200%。
渲染数据到图层中
用PointLineSeries、SampleDataSeries、FreeformPointLineSeries、HighLowSeries 或 AreaSeries 中任一个对象可将数据渲染到图层中。这些系列可以是添加到 ViewXY.PointLineSeries、ViewXY.SampleDataSeries、ViewXY.FreeformPointLineSeries、ViewXY.HighLowSeries 或 ViewXY.AreaSeries 集中的。还未添加到这些集中的临时系列也可以使用。以常规方式填充数据至系列中(PointLineSeries可参阅LightningChart数据可视化工具使用篇18-PointLineSeries及ViewXY通用,SampleDataSeries可参阅LightningChart数据可视化工具使用篇19-SampleDataSeries章节,
FreeformPointLineSeries可参阅第6.8章节,HighLowSeries可参阅LightningChart数据可视化工具使用篇22-High-lowSeries (高低系列)章节,AreaSeries可参阅[url=LightningChart数据可视化工具使用篇23-AreaSeries https://www.dxper.net/thread-50481-1-1.html (出处: 开发者论坛)]LightningChart数据可视化工具使用篇23-AreaSeries[/url]章节) 。
layer.RenderSeries(PointLineSeriesBase series): 在图层上渲染一个系列。
layer.RenderSeries(List<PointLineSeriesBase> seriesList): 在图层上渲染所有给定的系列。这比分别为每个系列调用layer.RenderSeries(PointLineSeriesBase series)更有效。
注意! 所有给定的系列将在图层上渲染,即便其Visible设置为False。
注意! 与该系列一起使用的X轴必须与提供给PersistentSeriesRenderingLayer构造函数的X轴相同。否则,将跳过该系列对象。
注意! RenderSeries用以渲染至图层中。在普通的系列之前,图层自己会先渲染 (PointLineSeries, SampleDataSeries, FreeformPointLineSeries, HighLowSeries, AreaSeries).
排列图层
调用layer.Dispose()可排列图层,并防止图层和图表一起渲染。
消除图层中数据的锯齿
设置layer.AntiAliasing为True,可在图表渲染阶段消除数据锯齿。如果硬件不支持它,它也支持反锯齿。
获得图层列表
ViewXY.GetPersistentSeriesRenderingLayers ( )返回所有创建的图层列表,包括 PersistentSeriesRenderingIntensityLayers.
需要注意的一些图层限制
由于其特殊的渲染技术,请记住这些限制:
- X 轴的 ScrollMode 必须设置为 None. 这种方法不可能实现X轴的实时滚动。
- 缩放、平移、轴调整以及图表调整大小都将导致图像与轴的范围不同步。在使用持久绘图或应用程序逻辑时,应该禁用这些特性,以便清除图层并临时为新层渲染重新创建之前的线条系列(有用于轴范围更改和大小调整的事件处理程序)。
- 改变图表大小会清除图层,并从Windows桌面锁状态重新开始。
- 仅在图层上渲染的系列中不支持鼠标交互
- EMF/WMF/SVG SVG导出格式,以矢量格式复制到剪贴板以及以矢量格式打印不支持图层。只支持栅格格式。
关于持续的系列渲染图层章节就分享到这里了,如果在实际应用中遇到技术问题或需要帮助,可以扫描下方微信二维码回复“学习” 可免费领取一套全功能板LightningChart数据可视化控件
后续我会不断更新LightingChart更详细的使用方法,写文不易,还望多多回复关注支持!谢谢! 最新版V10 LightningChart下载地址:猛击下载
|