Image 属性
图像的外观和行为
Image
属性控制 Image
对象的外观和行为。通过更改属性值,您可以修改该图像的特定方面。使用圆点表示法查询和设置属性。
im = image(rand(20)); C = im.CData; im.CDataMapping = 'scaled';
图像数据和质量
图像颜色数据,指定为下列形式之一:
向量或矩阵 - 此格式定义索引图像数据。每个元素定义图像一个像素的颜色。这些元素映射为颜色图中的颜色。
CDataMapping
属性控制映射方法。由 RGB 三元组组成的三维数组 - 此格式定义使用 RGB 三元值的真彩色图像数据。每个 RGB 三元组定义图像的一个像素的颜色。RGB 三元组是三元素向量,指定颜色的红、绿和蓝分量的强度。三维数组的第一页包含红色分量,第二页包含绿色分量,第三页包含蓝色分量。由于图像使用真彩色代替颜色图的颜色,因此
CDataMapping
没有任何作用。如果
CData
为double
类型,则 RGB 三元值[0 0 0]
和[1 1 1]
分别对应于黑色和白色。如果
CData
为整数类型,则该图像使用完整范围的数据确定颜色。例如,如果CData
为类型uint8
,则[0 0 0]
和[255 255 255]
分别对应于黑色和白色。如果CData
为类型int8
,则[-128 -128 -128]
和[127 127 127]
分别对应于黑色和白色。如果
CData
为类型logical
,则[0 0 0]
和[1 1 1]
分别对应于黑色和白色。
下图演示了两种颜色模型的 CData
的相对维度。
NaN
元素的行为未定义。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
颜色数据的映射方法,指定为 'direct'
或 'scaled'
。使用该属性控制 CData
中的颜色数据值到颜色图的映射。CData
必须是用来定义索引颜色的向量或矩阵。如果 CData
是定义真彩色的三维数组,该属性不起作用。
这些方法具有以下作用:
'direct'
- 将值解释为当前颜色图中的索引。带小数部分的值舍取为最接近的整数。如果值为
double
或single
类型,则小于或等于1
的值将映射到颜色图中的第一个颜色。大于或等于颜色图长度的值将映射到颜色图中的最后一种颜色。如果值为
uint8
、uint16
、uint32
、uint64
、int8
、int16
、int32
或int64
类型,则小于或等于0
的值将映射到颜色图中的第一个颜色。大于或等于颜色图长度的值将映射到颜色图中的最后一种颜色(或者最大可为该类型的范围限值)。如果值为
logical
类型,则值0
将映射到颜色图中的第一个颜色,值1
将映射到颜色图中的第二个颜色。
'scaled'
- 缩放值以使其跨度覆盖颜色范围。坐标区的CLim
属性包含颜色范围。
透明度数据,指定为以下格式之一:
标量 - 在整个图像中使用一致的透明度。
大小与
CData
相同的数组 - 对每个图像元素使用不同的透明度值。
AlphaDataMapping
属性控制 MATLAB® 如何解释 alpha 数据透明度值。
示例: 0.5
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
AlphaData
值的解释,指定为下列值之一:
'none'
- 将值解释为透明度值。值 1 或更大的值表示完全不透明,值 0 或更小的值表示完全透明,介于 0 和 1 之间的值表示半透明。'scaled'
- 将值映射到图窗的 alphamap 中。坐标区的最小和最大 alpha 范围确定分别映射到 alphamap 中第一个和最后一个元素的 alpha 数据值。例如,如果 alpha 范围是[3 5]
,则小于或等于3
的 alpha 数据值映射到 alphamap 中的第一个元素。大于或等于5
的 alpha 数据值映射到颜色图中的最后一个元素。坐标区的ALim
属性包含 alpha 范围。图窗的Alphamap
属性包含 alphamap。'direct'
- 将值解释为图窗的 alphamap 的索引。带小数部分的值向下舍取为最接近的整数:如果值为
double
或single
类型,则小于或等于 1 的值将映射到 alphamap 中的第一个元素。等于或大于 alphamap 的长度的值映射到 alphamap 中的最后一个元素。如果值的类型为整数,则 0 或更小的值映射到 alphamap 中的第一个元素。等于或大于 alphamap 的长度的值映射到 alphamap 中的最后一个元素(或者最大可为该类型的范围限值)。整数类型有
uint8
、uint16
、uint32
、uint64
、int8
、int16
、int32
和int64
。如果值为
logical
类型,则值 0 将映射到 alphamap 中的第一个元素,值 1 将映射到 alphamap 中的第二个元素。
插值方法,指定为 'nearest'
或 'bilinear'
。MATLAB 通过插值在屏幕上显示图像的缩放或旋转版本。您选择的值不会影响图像数组。但是,如果您保存图窗或导出坐标区的内容,MATLAB 会保存图像经过插值的视觉表示。
根据图像内容和要实现的效果选择插值方法:
'nearest'
- 当有少量表示明显不同类别的像素值时,或当您要在高度放大的视图中查看各个像素时,此方法最合适。位于 (x, y) 的像素值是原始图像中与 (x, y) 最邻近的像素值。'bilinear'
- 此方法在几乎所有其他情况下都最合适。位于 (x, y) 的像素值是原始图像中该位置周围像素的加权平均值。为最大程度地减少人为处理的痕迹,缩小图像时会进行额外的平滑处理。
自 R2022b 开始提供
最大渲染分辨率,指定为 "none"
或正整数值。使用此属性控制 MATLAB 显示较大图像维度时所使用的最大分辨率。较小的维度会相应调整以保持纵横比。您指定的值会影响屏幕显示,但不会影响存储在图像的 CData
属性中的图像数据。
指定 "none"
以完全分辨率显示图像。指定一个数字来限制显示图像的大小。较大的数字(以及 "none"
)提供较高质量的图像,但初始图像可能需要较长的渲染时间。较小的数字提供下采样图像,但渲染速度更快。
通常,当指定的值小于原始图像的最大图像维度时,图像渲染速度会更快。但是,如果您指定的值只比图像的最大维度小一个或几个像素,则该图像的初始渲染时间可能比以完全分辨率进行渲染的时间还长。
示例:显示下采样图像
读取 peppers.png
,它是一个 384×512 RGB 图像。然后调用 imagesc
函数,以沿较大的维度使用 128 个像素显示图像。较小的维度缩减到 96 个像素以保持原始纵横比。
imdata = imread("peppers.png"); imagesc(imdata,"MaxRenderedResolution",128)
位置
沿着 x 轴放置,以下列形式之一指定:
二元素向量 - 将第一个元素用作
CData(1,1)
的中心位置,将第二个元素用作CData(m,n)
的中心位置,其中[m,n] = size(CData)
。CData
的其余元素的中心均匀分布在这两点之间。每个像素的宽度由以下表达式确定:
(XData(2)-XData(1))/(size(CData,2)-1)
如果
XData(1)
>XData(2)
,则图像左右翻转。标量 - 会以此位置作为
CData(1,1)
的中心,并使后面的每个元素相隔一个单位。
注意
如果 XData
包含一个具有两个以上元素的向量,MATLAB 将使用第一个和最后一个元素,而忽略其他元素。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| datetime
(自 R2023b 起) | duration
(自 R2023b 起) | categorical
(自 R2023b 起)
沿 y 轴放置,以下列形式之一指定:
二元素向量 - 将第一个元素用作
CData(1,1)
的中心位置,将第二个元素用作CData(m,n)
的中心位置,其中[m,n] = size(CData)
。CData
的其余元素的中心均匀分布在这两点之间。每个像素的高度由以下表达式确定:
(YData(2)-YData(1))/(size(CData,1)-1)
如果
YData(1)
>YData(2)
,则图像上下翻转。标量 - 会以此位置作为
CData(1,1)
的中心,并使后面的每个元素相隔一个单位。
注意
如果 YData
包含一个具有两个以上元素的向量,MATLAB 将使用第一个和最后一个元素,而忽略其他元素。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| datetime
(自 R2023b 起) | duration
(自 R2023b 起) | categorical
(自 R2023b 起)
交互性
可见性状态,指定为 "on"
或 "off"
,或者指定为数值或逻辑值 1
(true
) 或 0
(false
)。值 "on"
等效于 true
,"off"
等效于 false
。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState
类型的 on/off 逻辑值。
"on"
- 显示对象。"off"
- 隐藏对象而不删除它。您仍然可以访问不可见对象的属性。
数据提示内容,指定为 DataTipTemplate
对象。您可以通过修改底层 DataTipTemplate
对象的属性来控制数据提示中显示的内容。有关属性列表,请参阅 DataTipTemplate 属性。
有关修改数据提示的示例,请参阅创建自定义数据提示。
此属性仅适用于具有固定数据提示的图像。
注意
findobj
或 findall
不返回 DataTipTemplate
对象,copyobj
也不复制该对象。
上下文菜单,指定为 ContextMenu
对象。使用此属性在您右键点击对象时显示上下文菜单。使用 uicontextmenu
函数创建上下文菜单。
注意
如果 PickableParts
属性设置为 'none'
或者 HitTest
属性设置为 'off'
,该上下文菜单将不显示。
选择状态,指定为 'on'
或 'off'
,或者指定为数值或逻辑值 1
(true
) 或 0
(false
)。值 'on'
等效于 true
,'off'
等效于 false
。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState
类型的 on/off 逻辑值。
'on'
- 已选择。如果您在绘图编辑模式下点击对象,则 MATLAB 会将其Selected
属性设置为'on'
。如果SelectionHighlight
属性也设置为'on'
,则 MATLAB 将在对象周围显示选择句柄。'off'
- 未选择。
选择时显示选择句柄,指定为 'on'
或 'off'
,或者指定为数值或逻辑值 1
(true
) 或 0
(false
)。值 'on'
等效于 true
,'off'
等效于 false
。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState
类型的 on/off 逻辑值。
'on'
- 在Selected
属性设置为'on'
时显示选择句柄。'off'
- 永远不显示选择句柄,即使Selected
属性设置为'on'
也是如此。
按照坐标区范围裁剪对象,指定为 'on'
或 'off'
,或者指定为数值或逻辑值 1
(true
) 或 0
(false
)。值 'on'
等效于 true
,'off'
等效于 false
。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState
类型的 on/off 逻辑值。
值为
'on'
会裁剪对象超出坐标区范围的部分。值为
'off'
会显示整个对象,即使对象的某些部分超出坐标区范围。如果您创建一个图、设置hold on
、冻结坐标区缩放,然后创建比原始图更大的对象,则该对象的某些部分可能会显示在坐标区范围之外。
必须将包含该对象的坐标区的 Clipping
属性设置为 'on'
。否则,此属性不起作用。有关裁剪行为的详细信息,请参阅坐标区的 Clipping
属性。
回调
鼠标点击回调,指定为下列值之一:
函数句柄
元胞数组,包含一个函数句柄和其他参量
作为有效 MATLAB 命令或函数(在基础工作区中计算)的字符向量(不推荐)
使用此属性在您点击对象时执行代码。如果使用函数句柄指定此属性,则 MATLAB 在执行回调时将向回调函数传递两个参量:
点击的对象 - 从回调函数中访问点击的对象的属性。
事件数据 - 空参量。在函数定义中将其替换为波浪号字符 (
~
) 以指示不使用此参量。
有关如何使用函数句柄定义回调函数的详细信息,请参阅Create Callbacks for Graphics Objects。
注意
如果 PickableParts
属性设置为 'none'
或者 HitTest
属性设置为 'off'
,则不执行此回调。
对象创建函数,指定为下列值之一:
函数句柄。
第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参量。
包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。
有关将回调指定为函数句柄、元胞数组或字符向量的详细信息,请参阅Create Callbacks for Graphics Objects。
此属性指定要在 MATLAB 创建对象时执行的回调函数。MATLAB 将在执行 CreateFcn
回调之前初始化所有属性值。如果不指定 CreateFcn
属性,则 MATLAB 执行默认的创建函数。
对现有组件设置 CreateFcn
属性没有任何作用。
如果将此属性指定为函数句柄或元胞数组,则可以使用回调函数的第一个参量访问正在创建的对象。否则,使用 gcbo
函数访问该对象。
对象删除函数,指定为下列值之一:
函数句柄。
第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参量。
包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。
有关将回调指定为函数句柄、元胞数组或字符向量的详细信息,请参阅Create Callbacks for Graphics Objects。
此属性指定在 MATLAB 删除对象时要执行的回调函数。MATLAB 在销毁对象的属性之前执行 DeleteFcn
回调。如果不指定 DeleteFcn
属性,则 MATLAB 执行默认的删除函数。
如果将此属性指定为函数句柄或元胞数组,则可以使用回调函数的第一个参量访问要删除的对象。否则,使用 gcbo
函数访问该对象。
回调执行控件
回调中断,指定为 'on'
或 'off'
,或者指定为数值或逻辑值 1
(true
) 或 0
(false
)。值 'on'
等效于 true
,'off'
等效于 false
。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState
类型的 on/off 逻辑值。
此属性确定是否可以中断运行中回调。有以下两种回调状态要考虑:
运行中回调是当前正在执行的回调。
中断回调是试图中断运行中回调的回调。
每次执行处理回调队列的命令时,MATLAB 都会确定回调中断行为。这些命令包括 drawnow
、figure
、uifigure
、getframe
、waitfor
和 pause
。
如果运行中回调不包含上述命令之一,则不会发生中断。MATLAB 首先完成执行运行中回调,然后执行中断回调。
如果运行中回调确实包含上述命令之一,则由运行中回调所属对象的 Interruptible
属性来确定是否发生中断:
如果
Interruptible
的值为'off'
,则不会发生中断。此时,由中断回调所属对象的BusyAction
属性确定中断回调是被丢弃还是添加到回调队列中。如果
Interruptible
的值为'on'
,则发生中断。下次 MATLAB 处理回调队列时,它会停止运行中回调的执行,并执行中断回调。在中断回调完成后,MATLAB 将继续执行运行中回调。
注意
回调的中断和执行在以下情况下会有不同的表现:
如果中断回调是
DeleteFcn
、CloseRequestFcn
或SizeChangedFcn
回调,则无论是否存在Interruptible
属性值都会发生中断。如果运行中回调当前正在执行
waitfor
函数,则无论是否存在Interruptible
属性值都会发生中断。如果中断回调由
Timer
对象所有,则回调将根据调度执行,而不考虑Interruptible
属性值。
回调排队,指定为 'queue'
或 'cancel'
。BusyAction
属性决定 MATLAB 如何处理中断回调的执行。有以下两种回调状态要考虑:
运行中回调是当前正在执行的回调。
中断回调是试图中断运行中回调的回调。
BusyAction
属性仅在同时满足以下两个条件时才确定回调排队行为:
在这些情况下,由中断回调所属对象的 BusyAction
属性确定 MATLAB 如何处理中断回调。以下是 BusyAction
属性的可能值:
'queue'
- 将中断回调放入队列中,以便在运行中回调执行完毕后进行处理。'cancel'
- 不执行中断回调。
捕获鼠标点击的能力,指定为以下值之一:
'visible'
- 仅当对象可见时才捕获鼠标点击。Visible
属性必须设置为'on'
。HitTest
属性决定是Image
对象响应点击还是前代响应点击。'none'
- 无法捕获鼠标点击。点击Image
对象会将点击操作传递给图窗窗口的当前视图中该对象下方的对象。Image
对象的HitTest
属性没有任何作用。
对捕获的鼠标点击的响应,指定为 'on'
或 'off'
,或者指定为数值或逻辑值 1
(true
) 或 0
(false
)。值 'on'
等效于 true,'off'
等效于 false
。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState
类型的 on/off 逻辑值。
'on'
- 触发Image
对象的ButtonDownFcn
回调。如果您已定义ContextMenu
属性,则调用上下文菜单。'off'
- 触发满足以下条件之一的Image
对象的最近前代的回调:HitTest
属性设置为'on'
。PickableParts
属性设置为允许前代捕获鼠标点击的值。
注意
PickableParts
属性决定 Image
对象是否可以捕获鼠标点击。如果无法捕获,则 HitTest
属性没有任何作用。
此 属性 为只读。
删除状态,以 matlab.lang.OnOffSwitchState
类型的 on/off 逻辑值形式返回。
当 DeleteFcn
回调开始执行时,MATLAB 会将 BeingDeleted
属性设置为 'on'
。BeingDeleted
属性将一直保持 'on'
设置状态,直到组件对象不再存在为止。
在查询或修改对象之前,请先检查其 BeingDeleted
属性的值,以确认它不是待删除项。
父级/子级
父级,指定为 Axes
、Group
或 Transform
对象。
子级,以空的 GraphicsPlaceholder
数组或 DataTip
对象数组形式返回。使用此属性来查看在图上绘制的数据提示的列表。
不能使用 Children
属性添加或删除子级。要向此列表中添加子级,请将 DataTip
对象的 Parent
属性设置为图对象。
父级的 Children
属性中对象句柄的可见性,指定为下列值之一:
"on"
- 对象句柄始终可见。"off"
- 对象句柄始终不可见。该选项用于防止另一函数无意中对其进行更改。将HandleVisibility
设置为"off"
可在执行该函数时暂时隐藏句柄。"callback"
- 对象句柄在回调或回调所调用的函数中可见,但在从命令行调用的函数中不可见。此选项阻止通过命令行访问对象,但允许回调函数访问对象。
如果父级的 Children
属性中未列出该对象,则通过搜索对象层次结构或查询句柄属性获取对象句柄的函数无法返回该对象。此类函数的示例包括 get
、findobj
、gca
、gcf
、gco
、newplot
、cla
、clf
和 close
函数。
隐藏的对象句柄仍有效。将根 ShowHiddenHandles
属性设置为 "on"
以列出所有对象句柄,而不管其 HandleVisibility
属性设置如何。
标识符
此 属性 为只读。
图形对象的类型,以 'image'
形式返回。
对象标识符,指定为字符向量或字符串标量。您可以指定唯一的 Tag
值作为对象的标识符。如果需要访问您代码中其他位置的对象,可以使用 findobj
函数基于 Tag
值搜索对象。
用户数据,指定为任何 MATLAB 数组。例如,您可以指定标量、向量、矩阵、元胞数组、字符数组、表或结构体。使用此属性存储对象上的任意数据。
如果您在 App 设计工具中工作,请在该 App 中创建公共或私有属性以共享数据,而不是使用 UserData
属性。有关详细信息,请参阅在用 App 设计工具创建的 App 内共享数据。
版本历史记录
在 R2006a 之前推出现在,您可以将 XData
和 YData
属性指定为日期时间、持续时间或分类坐标值。以前,仅支持数值和逻辑坐标值。
不推荐设置或获取 UIContextMenu
属性。请改为使用 ContextMenu
属性,该属性接受相同类型的输入,其行为方式与 UIContextMenu
属性相同。
没有删除 UIContextMenu
属性的计划,但当您对 Image
对象调用 set
、get
或 properties
函数时,该属性不再列出。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)