|
|
Bilddarstellung per Mausklick ändern |
|
LoKiaK |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 02.12.2016, 00:28
Titel: Bilddarstellung per Mausklick ändern
|
|
Hallo,
ich bin noch neu in der GUI-Programmierung, und könnte an folgender Stelle Hilfe gebrauchen: ich habe vier NxN-Matrizen, die ich graphisch einzeln ausgebe über
Es wäre praktisch, wenn ich mich einfach zwischen den vier Ausgaben durchklicken könnte, wenn also der Fensterinhalt wechselt, wenn ich in das Fenster klicke (vllt sogar vor und zurück mit der linken und rechten Maustaste).
Für Ratschläge wäre ich dankbar.
Gruß
|
|
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 02.12.2016, 01:33
Titel: Re: Bilddarstellung per Mausklick ändern
|
|
Hallo LoKiaK,
Du kannst die WindowButonDownFcn der
figure
dafür verwenden. Die dort definierte Funktion wird bei einem Mausklick in die Figre aufgerufen. Das Image-Objekt selbst hat auch eine ButtonDownFcn.
Entweder Du erstellst 4 Images und holst per
uistack
das jeweilige nach vorne. Oder Du erstellst nur ein Image-Objekt und speicherst die 4 Bilder in den UserData oder per
guidata
in der Figure. Dann setzt Du nur die 'CData'-Eigenschaft des Image-Objekts bei den Maus-Klicks.
Suche nach diesen Stichworten im Netz und probiere es mal aus. Es tauchen sicherlich noch mehr konkrete Fragen auf, die Du hier dann ja gerne wieder stellen kannst.
Gruß, Jan
|
|
|
LoKiaK |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 11.12.2016, 12:30
Titel: Re: Re: Bilddarstellung per Mausklick ändern
|
|
Hi Jan,
danke für Deine Hilfe.
Ich habe in einem 1sten Schritt folgendes versucht:
main.m
function myfun
Wenn ich in der main.m über CData den Inhalt neu setze ist das kein Problem, mit der Funktion klappt das aber noch nicht. Ich hätte gedacht, dass sich in h das handle auf das image befindet, sodass ich über die set-Funktion den Inhalt austauschen kann. Funktioniert aber nicht. Mal schaun woran es hapert.
Was wird überhaupt mit 'e' übergeben?
Gruß
|
|
|
LoKiaK |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 11.12.2016, 13:35
Titel: Nachtrag Re: Re: Bilddarstellung per Mausklick ändern
|
|
So funktioniert es:
Warum ist mir noch nicht klar, das ist jetzt das Ergebnis intuitiven Rumprobierens, aber nun gut.
Gruß
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 11.12.2016, 14:44
Titel: Re: Re: Bilddarstellung per Mausklick ändern
|
|
Hallo LoKiaK,
Es ist hoffnungsfroh anzunehmen, dass der erste Handle schon das AXES-Objekt sein wird. Sicherer und flexibeler ist es, das auch explizit auszuschreiben.
Der erste Input eines event-Callbacks ist immer das Objekt, welches das Event ausgelöst hat, hier ist ObjectH also die Figure, nicht das Image. Deshalb habe ich hier das Image einfach als 3. Input mit übergeben.
Alternative:
Gruß, Jan
|
|
|
LoKiaK |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 11.12.2016, 20:46
Titel: Re: Re: Re: Bilddarstellung per Mausklick ändern
|
|
Hallo Jan,
danke für Deine Hilfe. Ich verstehe noch nicht ganz die Verknüpfung von figure und image. Ich hätte gedacht, dass wenn ich eine image-Instanz erzeuge, dass ich damit automatisch eine figure bekomme. Wofür benötige ich "zusätzlich" noch das figure-Objekt?
Wenn ich Deine Alternative blind übernehme bekomme ich eine Fehlermeldung, folgendes funktioniert:
Ist das so in Deinem Sinne?
Gruß
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 12.12.2016, 11:51
Titel: Re: Re: Re: Bilddarstellung per Mausklick ändern
|
|
Hallo LoKiaK,
Ja, ich hatte einen Tippfehler : "Handles" statt "handles".
Wann immer Du einen Fehler erwähnst im Forum, post die vollständige Fehlermeldung dazu.
Wenn man
image
or
plot
eingibt, wird automatisch ein AXESD-Objekt dazu erzeugt. Ein AXES fügt dann wieder automatisch eine FIGURE ein, wenn noch keine offen ist. Das ist zwar praktisch und man kann die Handles später auch per
gca
und
gcf
erhalten. Wenn aber zwischendurch ein GUI-Callback eine weitere Figure erzeugt, hat man die Grafiken plötzlich im Warn-Dialog eingezeichnet.
Deshalb ist es grundsätzlich sicherer, die FIGUREs und AXES explizit zu erzeugen und sich die Handles zu merken. Bei einem 10-Zeiler sieht das noch unnötig aus, wenn man aber den Code mal auf 150'000 Zeilen aufgebohrt hat, ist es sehr schwierig, solche Nachlässigkeiten später wieder zu bereinigen.
Ja, Dein Code sollte so funktionieren.
Gruß, Jan
|
|
|
|
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
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.
|
|