我在MATLAB中有一个界面,它通过按下按钮2来绘制曲线。现在我无法打印出这个数字。更确切地说,我想添加另一个按钮来打印出情节。这是我的一段代码:
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%clear
%linkdata on
fileName = handles.fileName;
n_var=str2num(get(handles.n_var,'string'));
[x] = readColumns(fileName, n_var);
axes(handles.axes1);
hold on
plot(handles.axes1,x(1:n),'b','LineWidth',2)
hold off
感谢。
答案 0 :(得分:1)
看起来您使用GUIDE来制作GUI,因此您应该以相同的方式添加新按钮(通过GUIDE)。假设你已经这样做了,在它的回调函数中你会想要像:
function printButton_Callback(hObject, eventdata, handles)
fileName = handles.fileName;
im = getframe(handles.axes1);
%saves the image in variable "im" to a PNG file
imwrite(im.cdata, fileName, 'PNG')
end
函数getframe抓取输入句柄参数的快照(在这种情况下,你的轴处理)并返回一个带有图像数据(“cdata”)和用于框架的颜色图的结构。然后你用imwrite将图像数据写入磁盘,其中fileName可能是一个具有你想要的文件名的字符串,'PNG'告诉imwrite你想要的扩展名(你也可以使用BMP / GIF / JPEG或其他)
同样作为一个轻微的挑剔,在你的问题中你可以互换地使用数字和情节,但这个数字可能与情节不同;也就是说,你的数字将是你的整个GUI,而情节将在你的轴上,这将是你的GUI的孩子。
编辑:要保留轴标签,可能必须使用其他方法。相反,你可以做的是:
function printButton_Callback(hObject, eventdata, handles)
fileName = handles.fileName;
f_tmp = figure('visible', 'off');
copyobj(handles.axes1,f_tmp);
print(f_tmp, '-dpng', fileName);
close(f_tmp);
end
这将创建一个隐藏的图形f_tmp,将handle.axes1上的绘图复制到隐藏的图形,然后将其打印到由字符串命名的PNG文件(由标志'-dpng'指定,您可以使用其他扩展名)文件名。最后它关闭了隐藏的数字。我认为这样可行,如果不是,请告诉我