我已经开发了一个GUI浏览mat文件并在matlab中绘制图表现在我想使用GUI中的保存按钮将这些图保存为图像
我将保存回调函数编码为
[file,path]=uiputfile({'*.bmp','BMP'},'Save Image As');
f=getframe(handles.axes);
[x,map]=frame2im(f);
imwrite(x,fullfile(path, file),'bmp');
但是这段代码只给了我没有标记轴的图形。
有人建议我使用explore_fig
,但我无法将其用于我的目的
如果我想将GUI的特定区域保存为图像,我应该使用哪些代码
由于
答案 0 :(得分:0)
正如您所注意到的那样,使用getframe
它只能抓取轴的内容而不再使用它。为了标记轴,您可以利用轴的TightInset
属性来查找轴的边界矩形。 TightInset
是添加到轴Position
的边距,以便为标签腾出空间。
此外,您可以利用getframe
的第二个输入来指定要抓取的矩形(以像素为单位)。您可以使用hgconvertunits
(未记录)来计算此内容。
% Position INCLUDING labels/ticks
position = get(hax, 'Position');
inset = get(hax, 'TightInset');
outerpos = [position(1:2) - inset(1:2), position(3:4) + inset(3:4)];
% Ensure that the units are PIXELS
rect = hgconvertunits(hfig, outerpos, get(hax1, 'Units'), 'pixels', hfig);
% Grab only the specified rectangle from the figure
im = getframe(hfig, rect);
如果我们对某些样本数据执行此操作
% Load Sample Data
load mri
img = squeeze(D(:,:,12));
% Display axes in middle of figure
hfig = figure();
hax = axes('Position', [0.2 0.2 0.5 0.5]);
imagesc(img);
xlabel('columns');
ylabel('rows');
axis image;
原件看起来像这样
带有rect的getframe
的结果是