开发者论坛

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

LightningChart数据可视化工具使用篇34-缩放与平移

[复制链接]

0

精华

10

贡献

2072

赞扬

帖子
141
软币
3968
在线时间
255 小时
注册时间
2021-1-21
发表于 2021-6-3 10:52:27 | 显示全部楼层 |阅读模式
本帖最后由 .net_wang 于 2021-6-3 10:55 编辑

缩放与平移
使用 ZoomPanOptions 来控制缩放与平移设置。
微信截图_20210603102540.png
图:ZoomPanOptions 属性及子属性

缩放和平移是可配置的,可以通过鼠标左键或右键来实现。缩放也可以用鼠标滚轮来实现。

触控屏幕进行缩放

将两根手指放在图表上,并紧手指可缩小,或分离手指可放大。


图表会试着检测是否视图进行水平或垂直缩放,或两者同时进行。这一功能称作 ‘zooming with rails’,可由MultiTouchZoomDirection (Free/XAxis/YAxis/Rails)控制。


通过在X轴或Y轴或其标签上捏并/展开手指,可只对该特定的轴缩放。



设置 MultiTouchZoomingEnabled = false可以禁用触摸缩放。




触控屏幕进行平移
将两根手指放在屏幕上,以同等的速度滑动两根手指来平移视图。


一些系统支持惯性平移,也因此可以将手指从屏幕上“甩”离,视图会继续平移,然后慢下来,最后停下。



通过把手指放在X轴或Y轴或其标签上,然后滑动手指,可只对该特定的轴平移。


鼠标左键操作

设置 LeftMouseButtonAction 为 Zoom,可开启用鼠标左键缩放。设置其为Pan,可开启平移。要禁用从鼠标左键来缩放与平移,可设置其为None。


鼠标右键操作

设置RightMouseButtonAction为Zoom,可开启用鼠标右键缩放。设置其为Pan,可开启平移。要禁用从鼠标右键来缩放与平移,可设置其为None。


RightToLeftZoomAction
当 DevicePrimaryButtonAction或DeviceSecondaryButtonAction设置为Zoom时,可应用RightToLeftZoomAction。RightToLeftZoomAction规定了当从右向左进行鼠标缩放时会有什么操作效果。 (鼠标的X 按下坐标>完成坐标).



可用选择如下:


ZoomToFit: 适应所有的Y轴和X轴,使全部所属的系列数据都显示出来。使用ViewFitYMarginPixels设置值大于0,对轴进行缩放,使得在Y轴的最小和最大端的给定像素空间都保留空数据。


RectangleZoomIn: 矩形缩放,与从左到右缩放类似。


ZoomOut:用ZoomFactor属性缩小。


RevertAxisRanges: 设置轴值为具体数值,这些值在视图经过缩放或轴范围修改后恢复。在每条轴上的RangeRevertEnabled属性,控制着是否应该恢复轴的范围。若开启该属性后,当从右向左拖动鼠标,然后释放鼠标键,RangeRevertMinimum和RangeRevertMaximum属性则会应用到轴上。



PopFromZoomStack: 设置上次缩放时使用的轴范围,也就是返回到先前的缩放级别。


使用鼠标键进行缩放


单击鼠标进行变焦缩放
用 ZoomFactor 属性可控制变焦的近/远程度。若要应用负变焦效果,则将值设为倒数值(1/倍数)。使用鼠标光标位置作为变焦中心点来应用变焦缩放。


X 向缩放:
光标聚焦在图表控件时,按下Shift键。Zoom X 光标出现。单击已配置的鼠标键以放大,单击另一个键以缩小。


Y向缩放:
光标聚焦在图表控件时,按下 Ctrl键。Zoom Y光标出现。单击已配置的鼠标键以放大,单击另一个键以缩小。当使用堆叠的YAxisLayout时,缩放适用于所有图形段(Y轴)。按下Ctrl 和 Alt 键,Y向缩放仅应用于鼠标点击过的图形段。

同时按下 Shift 和 Ctrl(+Alt)二键,可对X和Y向应用缩放。


通过鼠标指针操作缩放
通过RectangleZoomMode 属性可以对缩放矩形所绘成的位置进行配置,以及应该如何处理不同的方向。默认情况下,该属性设置为 HorizontalAndVertical, 也就是将对通过从左向右拖动鼠标所绘成的区域进行缩放。相对地,从右向左拖拽鼠标绘成的是缩小矩形。 如果RectangleZoomMode设置为 Horizontal 或 Vertical, 只有这一个方向会缩放。



X轴和Y轴都具有ZoomOrigin 属性,可以用于设置缩放矩形的中心位置。如果If RectangleZoomMode 设置为 AboutYAxisZoomOrigin、AboutYAxisZoomOrigin 或 AboutXYZoomOrigin,the position set via通过 ZoomOrigin设置 的位置将总是用作缩放矩形的中心点。


微信截图_20210603103101.png
图:标准设置: ZoomPanOptions.RectangleZoomMode = HorizontalAndVertical. ZoomOrigin 对缩放矩形没有影响。

微信截图_20210603103204.png
图:ZoomPanOptions.RectangleZoomMode = Horizontal. 只对 X轴缩放,Y轴保持不变。
微信截图_20210603103256.png
图:ZoomPanOptions.RectangleZoomMode = Vertical. 只对 Y轴缩放,X轴保持不变。
微信截图_20210603103339.png
图:ZoomPanOptions.RectangleZoomMode = AboutXYZoomOrigin.不用管鼠标下移位置。缩放矩形与ZoomOrigin(两个轴)和鼠标当前位置成比例绘制。
微信截图_20210603103426.png
图:ZoomPanOptions.RectangleZoomMode = AboutXAxisZoomOrigin. 缩放矩形以XAxis.ValueOrigin为中心。鼠标向上和下移决定了缩放矩形的垂直高度。
微信截图_20210603103513.png
图:ZoomPanOptions.RectangleZoomMode = AboutYAxisZoomOrigin. 缩放矩形以YAxis.ValueOrigin为中心。鼠标向上和下移决定了缩放矩形的水平宽度。

矩形放大

用配置的鼠标键,在要缩放的区域从左上角到右下角拖动出一个矩形。对X和Y方向都有作用。用RectangleZoomDirection属性可以选择尺寸大小。 用ZoomRectFill和ZoomRectLine属性可以修改缩放矩形的边框及填充样式。

配置缩小矩形

当RightToLeftZoomAction 设置为 ZoomToFit、ZoomOut,、RevertAxisRanges 或PopFromZoomStack后,缩放时会出现缩小矩形。用ZoomOutRecFill 可配置其填充效果,用ZoomOutRectLine可配置线条样式。


用鼠标滚轮进行缩放

开启 WheelZooming 后,向上滚动鼠标滚轮可以放大,向下滚动可以缩小。缩放中心在鼠标光标的位置。用 ZoomFactor调整鼠标滚轮的缩放力度。按住 Shift 键不放,仅对X方向应用缩放。按住Ctrl键不放,仅对Y方向应用缩放。注意,当设置ScrollMode为Sweeping后,缩放不可用。

使用设备滚轮在轴上的缩放和平移
用 AxisWheelAction可配置应用于轴上的鼠标滚轮操作的效果。


None: 鼠标滚轮什么都不做


Zoom: 只缩放光标指针下方的轴


Pan: 只平移光标指针下方的轴


ZoomAll: 如果光标指针在一条X轴上,则缩放所有X轴,或者在一条Y轴上时,缩放所有Y轴。仅当设置YAxisLayout = Layered后,则应用与其他轴。



PanAll: 如果光标指针在一条X轴上,则平移所有X轴,或者在一条Y轴上时,平移所有Y轴。仅当设置YAxisLayout = Layered后,则应用与其他轴。

用鼠标键平移

配置 DevicePrimaryButtonAction或 DeviceSecondaryButtonAction为 Pan 来进行平移。按下已配置的鼠标键,拖动图形区域。要停止平移,释放鼠标键即可。若设置PanDirection为Both,根据拖动量,通过平移操作可滚动X和Y轴。设置PanDirection Vertical,则只针对Y轴;而PanDirection Horizontal则只以X轴为对象。在平移产生作用之前,用PanThreshold设定一些像素容差。使用为图表控件分配的ContextMenuStrip控件非常方便,可以防止每次平移停止时它都打开。


Ctrl、Shift与Alt键的启用/禁用

缩放操作支持这些修改键,而且在认情况下,它们是处于启用状态的。若要禁用这些键,可设置 AltEnabled = False、 CtrlEnabled = False 或 ShiftEnabled = False。


使用代码进行缩放

用 ZoomByFactor(…)方法以一个中心点及一个缩放倍数来缩放。用 Zoom(…)方法以矩形来缩放。 ZoomToFit()方法适合调用“缩放以适应”操作(适合所有的Y轴和X轴,以显示所有的系列数据)


使用代码对轴进行缩放

为X或Y轴的Minimum和Maximum 属性设置值。用SetRange(…)可对二者同时设置。


围绕可配置的原点进行矩形缩放

开启 RectangleZoomAboutOrigin后,可以ZoomOrigin为中心点,在X轴和Y轴上设置值,对称进行矩形缩放。


微信截图_20210603103900.png
图:ZoomPanOptions.RectangleZoomAboutOrigin 开启;设置 ViewXY.XAxes[0].ZoomOrigin = 10 且 ViewXY.YAxes[0].ZoomOrigin = 50.

以同样的单位连接Y轴缩放
开启 RectangleZoomLinkYAxes后,所有具有同样的Units.Text字符串的Y轴获得与经过矩形缩放的轴一样的Y轴值域。
微信截图_20210603104037.png
图:5个 Y 轴堆叠的视图。当对一个图形段应用矩形缩放时,图形段的Y轴被缩放,新的Y轴值域则会复制到所有具有相同Units.Text的Y轴。

自动Y轴适应
演示示例: Signal reader; Audio L+R, area, spectrograms; Waveform, persistent spectrum


用 AutoYFit 属性可控制自动的Y轴调整。自动 Y 轴适应可用于调整Y轴值域,以可见的X轴范围显示图表中的所有数据。这主要用于实时监控。每隔一段时间进行一次适应,用UpdateInterval可以毫秒为单位设置间隔。MarginPercents可用于定义系列和图形边界之间是否应该留有空白。启用 Through, 可对所有数据进行适应分析,但可能会在性能关键的系统中引起一些消耗。若禁用,仅一小部分最新数据用于适应程序,并可能在某些应用程序中引发错误的反应。


AutoYFit 可通过ZoomPaddingOptions启用:


[C#] 纯文本查看 复制代码
_chart.ViewXY.ZoomPanOptions.AutoYFit.Enabled = true;




哪些y轴是自动适应的也应该要定义。用TargetAllYAxes, 自动Y轴适应可同时应用与所有Y轴。相反,启用AllowAutoYFit可对每条Y轴分别应用。

// 对所有Y轴启用AutoYFit
_chart.ViewXY.ZoomPanOptions.AutoYFit.TargetAllYAxes = true;

// 仅对该Y轴启用AutoYFit
_chart.ViewXY.YAxes[0].AllowAutoYFit = true;

注意! AxisY 类还有Fit()方法可以Y轴方向进行适应。

Aspect ratio (屏幕高宽比)

AspectRatioOptions.AspectRatio 控制着 X/Y 比(或者地图上的经/纬比)。


默认情况下,将其设置为Off 可以对X轴和Y轴的值域分别进行设置。设置屏幕高宽比为Manual后,可用 ManualAspectRatioWH 属性设置首选比率。通过改变ManualAspectRatioWH,调整X轴的Minimum和Maximum属性,来获得所需的高宽比。缩放操作将依据长宽比设置运行。


ManualAspectRatioWH计算方法如下:


ManualAspectRatioWH = View width in pixels / View height in pixels * X axis range / Y axis range


例如:


ManualAspectRatioWH = 1530 / 902 * (20 – 0)/ (100 – 0)



视图的宽与高取决于窗口大小。轴值域即为最小值到最大值。
微信截图_20210603104403.png
图:图表的视图区域。其像素尺寸用于计算ManualAspectRatioWH.
当 AspectRatio 设置的不是 Off时, 轴刻度的尖不可用。



对于地图来说,AspectRatio = AutoLatitude 是以非常有用的选项。在不同位置查看地图时,AutoLatitude会动态改变高宽比。高宽比由视图的中心点决定。


从缩放与平移操作中除去特定的X轴或Y轴
• 要从缩放操作中排除掉特定的X轴或Y轴,设置


axis.ZoomingEnabled = False


• 要从平移操作中排除掉特定的X轴或Y轴,设置



axis.PanningEnabled = False

关于缩放与平移章节就分享到这里了,如果在实际应用中遇到问题需要帮助,可以扫描下方微信二维码与我联系,咱们共同研究相互学习。
b5354b9436db344e96ae6ae2fa1fedf.jpg

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

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




回复

使用道具 举报

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

GMT+8, 2024-12-22 21:29

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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