MATLAB 编程/句柄/图形句柄
图形本质上是一个窗口,用作一个或多个绘图、UI 控件等的容器。它是您可以创建的第二高级别的对象
要创建图形,请使用 figure 函数,如下所示
>> fhandle = figure;
这将创建一个新的图形窗口,并将所有图形数据存储在变量 fhandle 中。您还可以告诉 MATLAB 在创建图形的同时为其指定任意数量的属性,使用以下语法
>> fhandle = figure('Propertyname1', value1, 'Propertyname2', value2, ...);
有关图形的有效属性名称列表,请参见 文档“图形属性”页面。
您可以使用 close 函数以编程方式关闭图形并销毁其句柄
>> close(fhandle);
MATLAB 允许您使用 'get' 函数以以下方式获取图形句柄(或实际上任何类型的图形句柄,包括轴、线对象、文本对象等)的任何属性
>> h = figure; >> propvar = get(h, 'Propertyname');
将存储在变量 propvar 中的具有名称 'Propertyname' 的属性。使用 'get' 函数,您一次只能获取一个属性。
set 函数允许您设置图形和其他图形句柄的任意数量的属性。您可以通过以下方式调用 set 函数来更改任意数量的属性
>> set(h, 'Propname1', propval1, 'Propname2', propval2, ...);
如果您首先创建一个句柄数组,您还可以将相同属性修改为相同的值,用于任意数量的句柄
>> handlevec(1) = figure; >> handlevec(2) = figure; >> set(handlevec, 'Name', 'Figure window')
将创建两个新的图形,并为它们都赋予相同的标题:“图形窗口”。
有关图形属性的有效属性名称和值的列表,请参见文档。
即使您没有将图形分配给变量,您仍然可以使用内部 MATLAB 变量 gcf 来访问它。这主要为了方便,因此您不必将图形句柄从一个函数传递到另一个函数来进行修改。但是,由于下面的警告,您在使用 gcf 时必须非常小心,以确保您在有多个图形程序的情况下修改了正确的图形
当前图形是最后修改的图形,不一定是打开的图形 |
要获取当前图形的当前属性列表,请使用以下语法
>> get(gcf)
您还可以使用以下方法获取或设置特定属性
>> get(gcf, 'propertyname'); >> set(gcf, 'propertyname', value);
有关有效的图形属性名称及其值的格式,请参见 文档“图形属性”页面。
要保存图形的整个内容,请使用 saveas 函数
>> saveas(fhandle, 'X.fig');
将保存句柄为 fhandle 的图形的内容为 X.fig。.fig 文件可以在以后手动打开和编辑,尽管以编程方式以一致的方式打开和重新编辑它们通常很困难。
您还可以使用 saveas 函数保存图像格式,例如 .jpg、.tif、.bmp、.png 等。saveas 函数本质上是图形窗口本身中“文件 -> 另存为...”选项的命令行版本,但可能存在一些分辨率差异。使用这两种保存图形到文件的方法,生成的图像的质量通常不足以用于出版物等目的。
如果需要图形的高质量版本,可以使用 MATLAB 的 print 函数将图形打印到矢量格式(例如 Adobe Illustrator 的格式,使用 -dill 标志获取)或使用指定分辨率的栅格格式(例如,使用两个标志 -dpng 和 -r300 将告诉 MATLAB 将图形打印到 300dpi 的 PNG 文件)。有关支持的输出格式的更多详细信息,请参见该函数的文档 此处。
作为 MATLAB 的 print 函数的替代方案,可以使用 MATLAB 的贡献者中心提供的 plot2svg 函数从许多图形(不仅仅是 Simulink 模型)获取 SVG 文件(可从 这里 获取)。可以使用免费软件工具(如 Inkscape)编辑 SVG 文件,也可以在 Illustrator 中打开。