本帖最后由 .net_wang 于 2021-6-3 10:55 编辑
缩放与平移
使用 ZoomPanOptions 来控制缩放与平移设置。
图: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设置 的位置将总是用作缩放矩形的中心点。
图:标准设置: ZoomPanOptions.RectangleZoomMode = HorizontalAndVertical. ZoomOrigin 对缩放矩形没有影响。
图:ZoomPanOptions.RectangleZoomMode = Horizontal. 只对 X轴缩放,Y轴保持不变。 图:ZoomPanOptions.RectangleZoomMode = Vertical. 只对 Y轴缩放,X轴保持不变。 图:ZoomPanOptions.RectangleZoomMode = AboutXYZoomOrigin.不用管鼠标下移位置。缩放矩形与ZoomOrigin(两个轴)和鼠标当前位置成比例绘制。 图:ZoomPanOptions.RectangleZoomMode = AboutXAxisZoomOrigin. 缩放矩形以XAxis.ValueOrigin为中心。鼠标向上和下移决定了缩放矩形的垂直高度。 图: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轴上设置值,对称进行矩形缩放。
图:ZoomPanOptions.RectangleZoomAboutOrigin 开启;设置 ViewXY.XAxes[0].ZoomOrigin = 10 且 ViewXY.YAxes[0].ZoomOrigin = 50.
以同样的单位连接Y轴缩放 开启 RectangleZoomLinkYAxes后,所有具有同样的Units.Text字符串的Y轴获得与经过矩形缩放的轴一样的Y轴值域。 图: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)
视图的宽与高取决于窗口大小。轴值域即为最小值到最大值。
图:图表的视图区域。其像素尺寸用于计算ManualAspectRatioWH. 当 AspectRatio 设置的不是 Off时, 轴刻度的尖不可用。
对于地图来说,AspectRatio = AutoLatitude 是以非常有用的选项。在不同位置查看地图时,AutoLatitude会动态改变高宽比。高宽比由视图的中心点决定。
从缩放与平移操作中除去特定的X轴或Y轴
• 要从缩放操作中排除掉特定的X轴或Y轴,设置
axis.ZoomingEnabled = False
• 要从平移操作中排除掉特定的X轴或Y轴,设置
axis.PanningEnabled = False
关于缩放与平移章节就分享到这里了,如果在实际应用中遇到问题需要帮助,可以扫描下方微信二维码与我联系,咱们共同研究相互学习。 后续我会不断更新LightingChart更详细的使用方法,写文不易,还望多多回复关注支持!谢谢! 最新版V10 LightningChart下载地址:猛击下载
|