图形句柄(Figure handles)

图形(figure)本质上是一个窗口,用于容纳一个或多个图像、用户界面控件(uicontrols)等内容。它是你能创建的第二高级别的图形对象。


创建图形

使用 figure 函数可以创建图形窗口,例如:

>> fhandle = figure;

这会新建一个图形窗口,并将图形的所有数据存储在变量 fhandle 中。你也可以在创建图形的同时为其设置多个属性,语法如下:

>> fhandle = figure('Propertyname1', value1, 'Propertyname2', value2, ...);

有效的属性名称和含义请参见文档中的 figure properties 页面。


关闭图形

你可以使用 close 函数以编程方式关闭图形并销毁其句柄:

>> close(fhandle);

注意:
如果你通过 close 函数或点击图形窗口右上角的 “X” 关闭图形,那么该图形的数据将无法再访问,尝试访问将引发错误。关闭图形也会销毁其下所有坐标轴和注释对象的句柄。


get 和 set 函数

MATLAB 允许你通过 get 函数获取图形句柄(或其他图形句柄,如坐标轴、线条、文本等)的任何属性。例如:

>> h = figure;
>> propvar = get(h, 'Propertyname');

这会将名为 'Propertyname' 的属性值存入变量 propvarget 一次只能获取一个属性。

使用 set 函数可以设置任意多个属性。例如:

>> set(h, 'Propname1', propval1, 'Propname2', propval2, ...);

你也可以为多个句柄设置相同的属性值,只需先创建一个句柄数组:

>> handlevec(1) = figure;
>> handlevec(2) = figure;
>> set(handlevec, 'Name', 'Figure window');

这将创建两个新图形窗口,并都命名为 'Figure window'

图形属性名称和取值格式请参考官方文档。


gcf

即使你没有将图形赋值给变量,也可以通过 MATLAB 的内置变量 gcf 访问当前图形。这主要是为了方便使用,避免在函数之间传递图形句柄。但由于以下警告,使用 gcf 时必须特别小心,尤其在有多个图形同时打开的情况下:

当前图形是最近被修改的图形,而不一定是当前打开的图形。

要查看当前图形的所有属性:

>> get(gcf)

也可以获取或设置某个具体属性:

>> get(gcf, 'propertyname');
>> set(gcf, 'propertyname', value);

有关属性名称和取值格式,请参见文档中的 figure property 页面。


保存图形内容

要保存整个图形的内容,可使用 saveas 函数:

>> saveas(fhandle, 'X.fig');

这将图形保存为 .fig 文件,之后可以手动打开并编辑。不过,使用程序重新加载和一致性编辑 .fig 文件可能会比较麻烦。

saveas 也支持保存为 .jpg.tif.bmp.png 等图像格式。它等效于图形窗口中的“文件 --> 另存为...”功能,但可能在分辨率上略有差异。无论是用哪种方式保存图像,生成的图像质量往往不足以用于正式出版。


生成高质量图像

如果需要高质量图像,可以使用 MATLAB 的 print 函数将图像保存为矢量格式(例如使用 -dill 参数生成 Adobe Illustrator 格式),或指定分辨率的栅格图像格式(例如使用 -dpng-r300 参数保存为 300dpi 的 PNG 图像)。有关支持的输出格式,请参阅 print 函数的文档。

作为 print 的替代方式,可以使用 MATLAB 用户社区中的 plot2svg 函数将图形导出为 SVG 文件(不仅限于 Simulink 模型)。SVG 文件可以使用 Inkscape 等免费工具编辑,也可以在 Illustrator 中打开。


Last modified: Wednesday, 16 April 2025, 11:03 AM