Verfasst am: 16.05.2012, 09:15
Titel: Axes aus GUI als Bild speichern--> Axenbeschriftung fehlt
Hallo zusammen,
ich bin Matlab-Neuling und habe versucht eine Axis meiner GUI als Bild abzuspeichern. Dazu nutze ich uiputfile und anschließend getframe und imwrite. Ich dachte bisher immer, dass ich mit dem handle.axes1 das komplette "Axes" mit Beschriftungen, Skalierungen und eben alles was dazu gehört anspreche. Das scheint aber nicht der Fall zu sein. Ich bekomme zwar ein Bild, die Beschriftungen werden aber nicht mit kopiert.
Code:
% --- Executes on button press in save_button. function save_button_Callback(hObject, eventdata, handles) % hObject handle to save_button (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) [filename, filepath] = uiputfile({'*.jpg;*.tif;*.png;*.gif','All Image Files';...
'*.*','All Files' },'Save Image',...
'C:\Work\newfile.jpg');
frame = getframe(handles.axes1);
I = frame2im(frame);
imwrite(I,[filepath, filename]);
aber konnte mir nicht direkt weiter helfen. Ich glaube mir fehlt in Moment der Blick dafür, das auf mein Problem zu übertragen.
Wie bekomme ich die Axenbeschriftung für x und y mit in mein Bild?
Bin Dankbar für Denkanstöße oder Lösungsansätze!
danke für deine Antwort. Hab das mit den Figure-Handle ausprobiert. Ich kopiere damit komplette oberfläche meiner GUI.
Ich suche etwas, was mir nur die Grafik innerhalb meiner GUI samt Achsenbeschriftung ausspuckt.
Ich habe noch ein bisschen im Forum gestöbert und unter folgendem Link noch das gefunden:
http://www.gomatlab.de/plot-direkt-.....r-gui-speichern-t658.html
Hier wird eine neue figure erzeugt und unsichtbar gemacht. müsste das nicht auch ähnlich mit der axes1 direkt in meiner GUI funktionieren? Sorry wenn die Frage etwas doof gestellt ist, ich versteh nur leider noch nicht so ganz wieso dieses Handle auf mein axes1 nicht die Achsenbeschriftung beinhaltet oder wie ich die Achsen ansprechen kann
Das beschriften und Plotten meiner Axes mache ich in einer anderen Button Callback wie folgt:
Ich glaube mir fehlt nicht mehr viel um es so hin zu bekommen wie ich es mir vorstelle aber ich komm in Moment leider nicht drauf.
Ich hoffe es gibt noch einen Vorschlag
Entweder hilt dies schon weiter, oder Du kannst GETFRAME noch mit dem RECT Argument aufrufen (siehe "help getframe"), wobei "get(handles.axes1, 'OuterPosition')" hilfreich sein könnte.
Danke für den Hinweis, du hast mich auf die richtige Spur gebracht.
Ich habe das mit 'OuterPosition'versucht. Es hat so weit funktioniert, nur leider auch noch immer einen Teil außerhalt der GUI mit ausgeschnitten (warscheinlich weil die Grafik am Rand der GUI liegt).
Ich habe es jetzt 'Position' und 'TightInset' als RECT argument and getframe übergeben. Diese Lösung finde ich zwar nicht so hübsch, da ich eine Zwischenrechnung machen muss, aber sie tut was ich wollte.
So sieht es jetzt aus:
Schade, dass ich es nicht mit einem einzigen get und ohne die Zwischenrechnung hinbekommen habe aber naja jetzt tut es immerhin
Vielen Dank nochmal für deine Hilfe!
Grüße Mad
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.