Matlab GUI:如何在用户界面中打印出绘图



我在MATLAB中有一个接口,通过按下button2绘制曲线。我现在打不出这个数字。更准确地说,我想添加另一个按钮来打印出绘图。下面是我的一段代码:

% --- 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

谢谢。

看起来你使用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,复制你的情节手柄。axes1到隐藏的图形,然后将其打印到一个PNG文件(由标志'-dpng'指定,您可以使用其他扩展名),以字符串fileName命名。最后,它关闭了隐藏的人物。我想这样可以,如果不行请告诉我

相关内容

  • 没有找到相关文章

最新更新