Also beim Erstellen ist Resize ON, ich positioniere die Elemente und richte mich nach den inneren 333px. Jetzt setzte ich Resize OFF, weil das Fenster nicht skaliert werden soll. Plötzlich habe ich rechts 10px mehr. Die Arbeitsfläche hat sich in x und y vergrößert. Sieht natürlich blöd aus.
Ich denke mir gut, dann passe ich es einfach an und subtrahiere von den 333 genau die 10px ab. (also 323px Innenmaß). Nun sieht es gut aus und alles passt (aktiv zeigt er mir 333px an). Arbeite damit 2 Tage und alles passt weiterhin. Nun starte ich Matlab und plötzlich schneidet er mir was von der Fläche ab. D.h. manchmal gibt er mir bei Resize OFF die tatsächlichen 333px und manchmal 343px. Das ist tritt leider von Tag zu Tag anders auf. Jedes mal passe ich es und am nächsten Tag interpretiert er Resize OFF wieder anders.
Bis jetzt habe ich es nicht geschafft das Problem richtig zu reproduzieren.
Jetzt z.B. gebe ich 333px Innenmaß an und erhalte bei ResizeOff aber 343px. (Ziehe natürlich die 10px ab damit es rechts sauber abschneidet) In zwei Tagen oder auf der 2014 oder auf einem anderen Computer mit der gleichen Version interpretiert er die 333px richtig und da ich 10px abgeschnitten habe fehlen diese plötzlich.
Verfasst am: 17.03.2015, 15:29
Titel: Re: Innenfläche von einer Figure wird falsch interpretiert
Hallo stealth_mx,
Wozu erzeugst Du das Fenster überhaupt mit 'Resize' 'on'? Setze es doch gleich auf 'off'.
Zitat:
Jetzt setzte ich Resize OFF
Dann zeige bitte, wie Du das machst. Denn genau hier könnte der Fehler liegen.
Zitat:
Plötzlich habe ich rechts 10px mehr.
Dies wäre der erste Fall, der mir begegnet ist, bei dem Matlab etwas "plötzlich" macht. In allen anderen Fällen hat Matlab immer nur das gemacht, was explizit in einem Befehl steht.
Darum behaupte ich auch hier: Wenn sich die Figure 'Position' ändert, wird dies explizit im Code so getan. Suche also nach der Zeile, die dies macht, und entferne sie.
Es gibt einen Grund für die beiden unterschiedlichen Verhalten. Üblicherweise findet man solche Gründe z.B. mit dem Debugger: Gehe zeilenweise durch den Code, bis die Zeile auffällt, die das Verhalten ändert.
Es gibt keine Möglichkeit, dass ein Leser im Forum den Grund erraten kann.
Zitat:
D.h. manchmal gibt er mir bei Resize OFF die tatsächlichen 333px und manchmal 343px.
Solche Text-Beschreibungen verbergen oft die Gründe für die Beobachtungen. "Er gibt mir bei Resize OFF" kann eine Menge unterschiedlicher Dinge bedeuten. Besser:
also beim erstmaligen erstellen (beim Programmieren des GUIs) habe ich natürlich am figure nur das nötigste eingegeben. Resize habe ich ausgelassen. Standard ist jedoch, dass Resize auf ON ist. Ich kann ja die Figure skalieren. Folglich habe ich alles an die tatsächlichen 333px angepasst.
Also ich dann das Fenster fertig gebaut habe (Also alle Funktionen und Buttons etc), habe ich die Feinheiten eingestellt unter anderem auch Resize OFF gesetzt. Während des Ausführens verändere ich nichts an der Größe, oder der Einstellungen. Das einzige was ich in der Richtung mache ist das zentrieren des Fensters.
D.h. beim öffnen des Fensters ist es natürlich direkt auf OFF. Habe mich etwas falsch ausgedrückt.
Nochmal zum eigentlichen Kern, der vielleicht auch die Lösung bringt:
Wenn ich Resize OFF setze habe ich 10px mehr an Breite bzw Höhe. Bei Resize ON hingegen erhalte wirklich genau die Anzahl an Pixel die ich der Figure beim erstellen übergebe. Siehe Bilder. Ist das normal?
Wenn ich bereits am Anfang Visible auf ON setze bekomme ich stets die richtige Größe
Also die echten inneren 360px (habe von 333 auf 360 vergrößert).
Jetzt ist es egal ob Resize OFF oder ON.
Wenn ich am Anfang auf Visible Off setze und erst nach dem erstellen der Buttons das ganze auf Visible ON setzte, bekomme ich die verschiedenen Größen.
Mir bleibt das Problem immer noch unklar. Sprichst Du davon, wie Du das FIG-File in GUIDE erstellst oder geht es um einen FIGURE-Befehl im Code?
An welchem "Anfang" setzt Du die Visible-Eigenschaft?
Zitat:
Hier nochmal alle Veränderungen die ich vornehme. Bzw aufrufe.
Hier bin ich vollkommen verloren: Wo nimmst Du diese Änderungen vor, wann, warum und was beobachtest Du genau?
Zitat:
Unten nochmal der direkte Vergleich einmal ON (das kleinere) und einmal OFF
Hier fehlt nun noch der Befehl, mit dem Du diese Werte erhältst. Zumindest scheinen beide "test"-Werte gleich zu sein. Aber was erklärt das? Ich dachte, Du siehst einen Unterschied.
Ich kann Deiner bisherigen Problem-Beschreibung nicht folgen. Für eine hilfreiche Antwort wäre es wichtig nachvollziehen zu können, welche Befehle Du genau ausführst. Am besten wäre ein lauffähiger Code, der das Problem reproduziert. Mal ein einzelnes Detail von den Inputs, mal eines von den Beoabchtungen reicht nicht, um ein vollständiges Bild zu bekommen.
Einfachmal ausführen und einmal mit OFF und ON die größe anschauen.
Hier ist das so, dass wenn ich am Anfang Visible OFF setze ich nicht die 360px bekomme sondern 370px. Sowohl Resize als auch Visible haben einen Einfluss auf die tatsächliche Größe. Und das Probem dabei ist wenn ich es auf einem anderen Rechner starte interpretiert er das anders, sodass dort bei Visible OFF und Resize OFF ich die Größe von 360px bekomme.
Ja, das sieht wie ein Bug aus. Unter Matlab 2011b hilft es, MOVEGUI erst aufzurufen, wenn die 'Visible'-Eigenschaft der Figure auf 'on' gesetzt worden ist.
ja das kann daran liegen. In 2014 scheint dieser Bug nicht mehr vorzukommen.
Ja mit dem erst Visible scheint es zu funkionieren, hat leider nur einen kleinen Schönheitsfehler. Ich baue das GUI einfach bei P(100/100) auf und zentriere es anschießend, was dazu führt das es in dem Punkt(100/100) kurz aufblinkt und dann erst zentriert aufblinkt. Werde das aber mit ein paar Tricks lösen.
Danke
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.