WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

GUI größer als Bildschirm - wird abgeschnitten

 

Jette
Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 13.02.09
Wohnort: München
Version: R2010b, R2015b
     Beitrag Verfasst am: 09.02.2012, 13:54     Titel: GUI größer als Bildschirm - wird abgeschnitten
  Antworten mit Zitat      
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).

Wäre dankbar für jeden Tip.

Viele Grüße
Jette
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 09.02.2012, 16:33     Titel:
  Antworten mit Zitat      
Also

versuche mal folgendes:

Code:

 fig      = figure
    hax = axes('Units','pixels');
    surf(peaks)
    uicontrol('Style', 'popup',...
           'String', 'jet|hsv|hot|cool|gray',...
           'Position', [20 340 100 50],...
           'Callback', @setmap);

un_pix  = findobj(fig, 'Units','pixels')
set(un_pix,'Units','normalized')

setpixelposition(fig,[30 70 1200  690])
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Marco H.
Forum-Guru

Forum-Guru


Beiträge: 404
Anmeldedatum: 12.11.10
Wohnort: Dortmund
Version: 2010a/2012b
     Beitrag Verfasst am: 09.02.2012, 18:04     Titel:
  Antworten mit Zitat      
Hey,

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

-> http://www.gomatlab.de/gui-zu-gross.....e-bildschirme-t22111.html

Greetings
Private Nachricht senden Benutzer-Profile anzeigen
 
Jette
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 13.02.09
Wohnort: München
Version: R2010b, R2015b
     Beitrag Verfasst am: 10.02.2012, 10:00     Titel:
  Antworten mit Zitat      
Danke für die bisherigen Antworten.

denny hat Folgendes geschrieben:
Also

versuche mal folgendes:

Code:

 fig      = figure
    hax = axes('Units','pixels');
    surf(peaks)
    uicontrol('Style', 'popup',...
           'String', 'jet|hsv|hot|cool|gray',...
           'Position', [20 340 100 50],...
           'Callback', @setmap);

un_pix  = findobj(fig, 'Units','pixels')
set(un_pix,'Units','normalized')

setpixelposition(fig,[30 70 1200  690])
 


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.

Gruss
Jette
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 10.02.2012, 12:26     Titel:
  Antworten mit Zitat      
Hast du die GUI von Hand in GUIDE verkleinert?

Dann müssen alle andere GUI-Objekte auch angepasst werden, da sie wohl noch alte Koordinaten enthalten, gehen diese aus dem Bereich der GUI
Private Nachricht senden Benutzer-Profile anzeigen
 
Jette
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 13.02.09
Wohnort: München
Version: R2010b, R2015b
     Beitrag Verfasst am: 10.02.2012, 12:45     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 11.02.2012, 08:01     Titel:
  Antworten mit Zitat      
Nein ich habe nicht gemeint, dass das musst,
Das klang als, ob du über GUIDE-Verkleinerung durchführst .

Beim Letzten Lösungsvorschlag wurden bloß nicht alle Objekte auf normalized umgestellt.
also probiere folgendes:
Code:

 fig      = figure
    hax = axes('Units','pixels');
    surf(peaks)
    uicontrol('Style', 'popup',...
           'String', 'jet|hsv|hot|cool|gray',...
           'Position', [20 340 100 50],...
           'Callback', @setmap);

un_pix  = findobj(fig,...
    '-or','Units','pixels',...
    '-or','Units','inches',...
    '-or','Units','centimeters',...
    '-or','Units','points',...
    '-or','Units','characters');


set(un_pix,'Units','normalized')

setpixelposition(fig,[30 70 1200  690])
Private Nachricht senden Benutzer-Profile anzeigen
 
Jette
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 13.02.09
Wohnort: München
Version: R2010b, R2015b
     Beitrag Verfasst am: 17.02.2012, 10:00     Titel:
  Antworten mit Zitat      
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!
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.