pan
R2022a以交互方式平移图形视图
语法
pan on
pan xon
pan yon
pan off
pan
pan(fig,...)
h = pan(fig)
描述
pan on 为当前图窗中的坐标区启用平移模式。
pan xon 为当前图窗中的坐标区二维视图启用平移模式并仅支持 x 轴方向的平移。
pan yon 为当前图窗中的坐标区二维视图启用平移模式并仅支持 y 轴方向的平移。
pan off 为当前图窗中的坐标区关闭平移模式。从 R2018b 开始,不管平移模式设置如何,都会默认启用一些平移交互。如果要禁用这些默认交互,请使用 disableDefaultInteractivity 函数。
pan 将当前图窗中的坐标区平移模式切换为 on 或 off。
pan(fig,...) 在指定图窗中设置相对于坐标区的平移模式。
h = pan(fig) 返回图窗 fig 的图窗平移模式对象,供您用来自定义模式的行为。
使用平移模式对象
访问平移模式对象的以下属性。
Enable'on'|'off'- 指定当前是否在图窗中启用此图窗模式。Motion'horizontal'|'vertical'|'both'- 图窗所启用的平移类型。此属性仅影响二维视图 ([0 90]) 中的坐标区。FigureHandle <handle>- 关联的图窗句柄,无法设置的只读属性。ContextMenu <handle>- 指定右键点击动作期间要显示的自定义上下文菜单。UseLegacyExplorationModes'off'(默认值)| on/off 逻辑值 - 旧模式,指定为'on'或'off',或者指定为数值或逻辑值1(true) 或0(false)。值'on'等效于true,'off'等效于false。因此,您可以使用此属性的值作为逻辑值。该值存储为matlab.lang.OnOffSwitchState类型的 on/off 逻辑值。将此属性设置为
'on'会更改 UI 图窗中交互模式的行为,使其与传统图窗中模式的行为相匹配。有关详细信息,请参阅enableLegacyExplorationModes。一旦该属性设置为'on',它就无法再更改回'off'。此属性仅应用于使用uifigure函数或在 MATLAB® Online™ 中创建的图窗的平移对象。
平移模式回调
您可以对平移模式操作的以下回调进行编程。
ButtonDownFilter <function_handle>- 拦截ButtonDown事件的函数应用程序可以在编程人员定义的情况下禁止平移操作,具体取决于回调返回的内容。输入函数句柄应引用包含两个隐式参数的函数(类似于图形对象回调):
function [res] = myfunction(obj,event_obj) % obj handle to the object clicked on % event_obj event data (empty in this release) % res [output] a logical flag to determine whether the pan % operation should take place(for 'res' set to 'false') % or the 'ButtonDownFcn' property of the object should % take precedence (when 'res' is 'true')
ActionPreCallback <function_handle>- 平移前执行的函数如果需要在平移操作开始时执行代码,则设置该回调。函数句柄应引用包含两个隐式参数的函数(类似于图形对象回调):
function myfunction(obj,event_obj) % obj handle to the figure that has been clicked on % event_obj object containing struct of event data
事件数据结构体包含以下字段:
Axes要平移的坐标区的句柄
ActionPostCallback <function_handle>- 平移后执行的函数如果需要在平移操作结束时执行代码,则设置该回调。函数句柄应引用包含两个隐式参数的函数(类似于图形对象回调):
function myfunction(obj,event_obj) % obj handle to the figure that has been clicked on % event_obj object containing struct of event data % (same as the event data of the % 'ActionPreCallback' callback)
平移模式工具函数
处于平移模式的以下函数查询并设置其某些属性。
flags = isAllowAxesPan(h,ax)- 查询平移坐标区的权限的函数。如果对平移对象
h调用函数isAllowAxesPan,并且坐标区句柄的向量ax作为输入,则返回与坐标区句柄向量具有相同维度的逻辑数组,指示是否允许对坐标区对象执行平移操作。setAllowAxesPan(h,ax,flag)- 设置平移坐标区的权限的函数。如果对平移对象
h调用函数setAllowAxesPan并且具有坐标区句柄向量ax和逻辑标量flag,则将允许或禁止对坐标区对象执行平移操作。cn = getAxesPanConstraint(h,ax)- 用来获取平移操作的约束条件的函数。对平移对象
h调用函数getAxesPanConstraint并以坐标区对象ax作为输入,可返回坐标区的约束条件。返回的约束条件是下列值之一:'x'、'y'、'z'、'xy'、'xz'、'yz'或'unconstrained'。setAxesPanConstraint(h,ax,cnstr)- 用来为平移操作设置约束条件的函数。对平移对象
h调用函数setAxesPanConstraint并使用坐标区对象ax和约束条件选项cnstr,可设置坐标区的约束条件。指定约束条件为下列值之一:'x'、'y'、'z'、'xy'、'xz'、'yz'或'unconstrained'。sty = getAxes3DPanAndZoomStyle(h,ax)- 获取平移操作类型的函数。对平移对象
h调用函数getAxes3DPanAndZoomStyle并以坐标区句柄向量ax作为输入,可返回每个坐标区的平移类型。为每个坐标区返回的值为'limits'或'camera'。setAxes3DPanAndZoomStyle(h,ax,style)- 设置平移操作类型的函数。如果对平移对象
h调用函数setAxes3DPanAndZoomStyle并且坐标区句柄向量ax和字符数组style作为输入,则将设置每个坐标区的平移类型。将样式指定为'limits'或'camera'。cns = getAxesPanMotion(h,ax)- 用来获取平移操作的约束条件的函数(不建议,请使用getAxesPanConstraint)。对平移对象
h调用函数getAxesPanMotion并以坐标区对象向量ax作为输入,将返回与ax维度相同的字符元胞数组,指示每个坐标区的约束条件。为每个坐标区返回的值为'horizontal'、'vertical'或'both'。setAxesPanMotion(h,ax,constraints)- 用来设置平移操作的约束条件的函数(不建议,请使用setAxesPanConstraint)。对平移对象
h调用函数setAxesPanMotion并使用坐标区对象向量ax和字符数组constraints,可设置每个坐标区的约束条件。将约束条件指定为'horizontal'、'vertical'或'both'。
示例
提示
您可以一次性创建平移模式对象,然后将其用于自定义不同坐标区的行为。您也可以动态更改其回调函数。
注意
不要在交互式模式下更改图窗回调。虽然缩放模式在进行平移、缩放等操作时有效,但在尝试更改图窗的任何回调时会收到警告,操作也会失败。此规则的一个例外情况是图窗的 WindowButtonMotionFcn 回调,您可以在缩放模式下更改该回调。因此,如果创建的 UI 将更新图窗的回调,UI 应以某种方式跟踪哪种交互式模式(如果有)处于活动状态,然后再尝试执行该操作。
当通过模式对象为不同的 subplot 坐标区指定不同的平移行为,然后使用 linkaxes 函数链接这些坐标区时,无论之前为另外的坐标区设置了何种行为,使用鼠标操作的坐标区的行为将会延伸到所链接的坐标区。
备选方法
使用工具栏上的平移工具启用和禁用绘图的平移模式,或从图窗的工具菜单中选择平移。