How does an m-file output appear in GUI axis?

1 次查看(过去 30 天)
I have an m-file that is executed by a pushbutton in a GUI. It extracts a number of jpeg images and averages them together. The final image is displayed in another figure window. How do I get the result to not appear in another figure window but an axis that is within the GUI interface?

回答(3 个)

Jan
Jan 2011-7-4
You can store the handle of the AXES object in the guidata. See "help guidata". Then you can use this handle for creating the new image.

Paulo Silva
Paulo Silva 2011-7-4
In your GUI tag the axes you want to be used
set(gca,'Tag','SueGUIAxes')
Wherever you want to execute the code to show the results do this
axes(findall(0,'Tag','SueGUIAxes')) %set the axes as the current ones
%draw the image
Setting the axes to the current one might not work so it's better to give the handle for the axes to the function that plots/draws the image.
Example, if you want to plot on your GUI axes do this:
plot(findall(0,'Tag','SueGUIAxes'),1,1,'*')
Last step: In the GUIDE layout click on the background of the GUI with your mouse right button, choose GUI Options, now change the command line accessibility to ON, now my solution of tagging the axes works just fine.
It works while the GUI is open and the axes tagged so you can do that plot even in the command line or any m-file.
  6 个评论
Sue
Sue 2011-7-5
I'm sorry I still do not understand. Where do I copy and paste the entire m-file? Up to now I am using Guide to create my GUI and have put the name of the m-file in the callback function of the pushbutton (i.e. when I double click the appropriate pushbutton in the GUI, I have placed the name of the m-file I wish it to run in the callback space). I don't think I can copy and paste an entire m-file into this space can I?
Also, I have just changed, using GUI options, the command line accessibility to On and now the image that I had originally placed in the axes before any results should end up there, has disappeared! And by changing the GUI options back again (or infact to any option) I cannot get my image to appear there again now. Its disappeared forever!! How do i get it back?
S x
Paulo Silva
Paulo Silva 2011-7-5
Calling the m-file by name or having the m-file code in your GUI is almost the same thing except in terms of memory zones and other small details. Remove the line where you call the m-file by it's name and paste the m-file code to the same line.
That's weird, how do you insert the image on the axes?

请先登录,再进行评论。


Gerd
Gerd 2011-7-5
Hi Sue, as Paulo stated it looks like you cannot select the axes with the imagesc command.
A workaround might be to use
im = imagesc(uint8(T_mean)), colormap gray
% get current figure handle
your_fig = gcf;
% copy the image to your axes in the GUI
copyobj(im,handles.youraxes)
%Close the im figure
close(your_fig);
Gerd
  5 个评论
Sue
Sue 2011-7-5
Sorry but I have no idea what you mean?
S x
Sue
Sue 2011-7-18
Am still getting the above error message. You suggested adding the handles structure (which is result_axes - the 'tag' yes) to the function call? What is the 'function call'? And also to the function prototype of my m-file. What is a 'function prototype'?
Sorry for my lack of knowledge :-/
Sue x

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Interactive Control and Callbacks 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by