开发者论坛

 找回密码
 注册 (请使用非IE浏览器)
查看: 6189|回复: 0

LightningChart数据可视化工具使用篇43-持续的系列渲染图层

[复制链接]

0

精华

10

贡献

2071

赞扬

帖子
141
软币
3968
在线时间
255 小时
注册时间
2021-1-21
发表于 2021-8-10 10:06:56 | 显示全部楼层 |阅读模式
本帖最后由 .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对象,在每一轮更新中,任何的系列量都可以在它们每个上面渲染。

微信截图_20210810095020.png

图:持续性图层可显示历史轨迹(绿色)。其上方显示的是一个普通的 PointLineSeries(红色)
微信截图_20210810095120.png
图:持续性图层可显示历史轨迹(绿色)。在更新渲染层中的新数据之前调用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数据可视化控件

b5354b9436db344e96ae6ae2fa1fedf.jpg

后续我会不断更新LightingChart更详细的使用方法,写文不易,还望多多回复关注支持!谢谢!

最新版V10 LightningChart下载地址:猛击下载














回复

使用道具 举报

Archiver|手机版|小黑屋|开发者网 ( 苏ICP备08004430号-2 )
版权所有:南京韵文教育信息咨询有限公司

GMT+8, 2024-4-25 18:39

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表