在LabWindows/CVI中实现Graph控件的缩放和平移

更新 Dec 5, 2018

问题详述

我想知道是否可以在LabWindows / CVI中缩放和平移图形控件?如果可以,该怎么做呢?

解决方案

LabWindows / CVI提供了图形控件缩放和平移的功能。

通过缩放您可以改变Graph控件的视图的大小。当您放大时,整个视图会变小,但是局部的分辨率会提高;当您缩小时,整个视图会变大,您可以看到更广阔的区域。您同样可以使用平移的功能来调整当前视图位置。

默认情况下,缩放和平移功能是不可用的。要想使能这两项功能,只需确保Graph控件工作方式不是indicator。您可以通过控件编辑器或者在程序中来使能该项功能:

 

  • 如果您在控件编辑器中设置Zoom StyleZoom to Rectangle或者在程序中设置控件的ATTR_ZOOM_STYLE属性为VAL_ZOOM_TO_RECT,您就可以重新定义一个矩形的区域为新的Graph控件的显示区域。在您想要的区域的一个角点击鼠标左键,保持按下状态拖动鼠标到另外一个角,松开鼠标左键,您就选择好了需要放大的一个矩形的区域。  
  • 如果您在控件编辑器中设置Zoom StyleX-ZoomY-Zoom 或者在程序中设置控件的ATTR_ZOOM_STYLE属性为VAL_ZOOM_XAXIS 或 VAL_ZOOM_YAXIS,您可以在单轴上实现缩放。就像Zoom to Rectangle 模式一样选择一个矩形,视图就会在指定的轴上实现放大。
  • 如果您在控件编辑器中设置Zoom StyleZoom Around Point或者在程序中设置控件的ATTR_ZOOM_STYLE属性为VAL_ZOOM_AROUND_PT,您可以选择一个点,然后围绕着这个点实现缩放。按下键盘上的<Ctrl>同时按下鼠标左键来选择一个点,保持鼠标按下的姿势就会以该点为中心实现放大,您可以在任意时刻松开 <Ctrl>键。如果您拖动了鼠标,放大的焦点也会随之到新的鼠标点。松开鼠标左键就可以停止放大了。

按下键盘<Ctrl-Shift>,在Graph控件的视图中按住鼠标左键,平移到一个位置后松开,一个新的视图区域就会在Graph控件中显示。您可以拖动鼠标到屏幕的任何区域,就是说并不局限于Graph控件的视图之内。如果您使能了Graph控件的缩放功能,平移功能就可用了。

按住键盘<Ctrl>并且点下鼠标右键,保持按下状态就可以实现缩小的功能。在Zoom Around Point 模式下, 视图的分辨率会动态地缩小一直持续到您松开鼠标。在其他模式下,视图的分辨率以10%的比例缩小。

注意:按下<Ctrl-Space>可以返回上一步操作,CVI会记住多达25次您之前的操作。

若要以编程方式启用缩放和平移,您可以使用SetCtrlAttribute函数来设置Graph控件的 ATTR_ENABLE_ZOOM_AND_PAN属性来通过编程来使用控件的缩放和平移功能。

注意:如果您使能了Graph控件的自动缩放,当您手动缩放和拖动的时候该项功能将会被禁用。如果您在缩放和拖动的时候又向Graph控件里添加曲线,LabWindows/CVI将会先实现缩放和拖动,再来显示新加入的曲线。

注意:上述缩放的模式是在LabWindows/CVI 8.5中引入的新功能。只有Zoom Around Point 模式才可以用在前期版本的LabWindows/CVI中。