Verfasst am: 09.02.2012, 13:54
Titel: GUI größer als Bildschirm - wird abgeschnitten
Hallo,
ich habe eine GUI geerbt, die mit GUIDE erstellt wurde und deren Größe 1200x800 pixel beträgt. Die meisten Positionsangaben der (sehr zahlreichen) GUI-Elemente sind in Pixel angegeben.
Jetzt soll diese GUI auf einem Laptop zum Laufen gebracht werden, der nur eine Auflösung von 1366x 768 hat. Das Ergebnis ist, dass die GUI hier oben "abgeschnitten" wird auf eine Höhe von 703 Pixel (mit get(fig,'Position' ermittelt)). Ich habe versucht, in der Opening-Function die GUI so zu reskalieren, dass sie auf das Display passt. Das Problem dabei ist aber, dass nur die sichtbaren Elemente umskaliert werden, d.h. der oben fehlende Rand fehlt weiterhin, auch wenn jetzt genug Platz wäre.
Wie schaffe ich es, dass die GUI komplett auf dem zu kleinen Monitor dargestellt wird? (Herunterskalieren auf die vorhandene Höhe wäre ok, aber ich brauche halt auch die Elemente am oberen Rand).
und falls die uicontrols dadurch zu klein werden oder zukünftig noch eine geringere Monitorauflösung verlangt wird, dann gibt es hier noch eine Möglichkeit...
Das funktioniert leider nicht, weil es nur angewendet wird auf die Objete, die tatsächlich erzeugt wurden. Das Problem scheint zu sein, dass die Elemente am oberen Rand, die quasi über den Bidschirmrand hinausgehen würden, von GUIDE gar nicht erst angeleget werden. Ich habe aber erst Zugriff in der OpeningFunction, wenn die GUI bereits erzeugt wurde.
Nein, das von Hand in GUIDE verkleinern würde ich gerne vermeiden, da die GUI sehr viele Elemente enthält und das sehr aufwendig wäre. Es ist auch nicht mehr viel Platz da, so dass die GUI dann sehr zusammengequetscht wäre.
Ich habe inzwischen eine Lösung gefunden und möchte diese hier kurz skizzieren:
- Handles aller GUI-Elemente ermitteln (s.o.)
- alle GUI-Elemente auf 'normalized' setzen
- setze die Fenstergröße auf [(neue Breite) (neue Höhe der sichtbaren Elemente)]
- alle GUI-Elemente auf 'pixels' setzen
- setze die Fenstergröße auf [(neue Breite) (n[/list]eue Höhe für alle Elemente)]
Der Witz ist, dass beim Umskalieren zunächst nur die ursprünglich sichtbaren Elemente umskaliert werden. Erst wenn ich diese verkleinere, um Platz zu schaffen, sie dann wieder auf Pixel "festhalte" und das Fenster vergrößere, werden die zunächst unsichtbaren Elemente wieder sichtbar.
Vielen Dank für Eure Hilfe!
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.