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

Animation: Aufblenden und Ausblenden vom Images

 

stealth_mx
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 94
Anmeldedatum: 15.06.13
Wohnort: ---
Version: 2013b
     Beitrag Verfasst am: 10.02.2015, 10:20     Titel: Animation: Aufblenden und Ausblenden vom Images
  Antworten mit Zitat      
Hallo zusammen,

ich möchte die Resultate einer Simulation in dem GUI darstellen. Ich möchte den Schieberegler dazu nutzen um die Ergebnisse in Abhängigkeit der Zeit zu betrachten. Die Ausgänge können nur low oder high sein. Wenn Sie High werden, sollen passende Grafiken an festen Positionen angezeigt werden (eingeblendet). (Wenn low dann ausgeblendet werden)

Den Schieberegler nutze ich um die Zeit zu simulieren. Insgesamt sind es ca 300 Zeitschritte die wählbar wären.

Ich habe einen Eventlistener auf den Schieberegler gesetzt.

Bis jetzt habe ich das ganze mit image/sc etc versucht aber dann fällt mir die Positionierung schwer(Ich möchte gerne pixelgenaue Darstellung, da die Grafiken auch etwas besser aussehen, wenn sie nicht verzehrt sind). Wenn ich axes benutze dann füllt er mir den Arbeitsspeicher.

Wie könnte man sowas realiseren weiß das jemand?

Grüße
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 11.02.2015, 13:31     Titel: Re: Animation: Aufblenden und Ausblenden vom Images
  Antworten mit Zitat      
Hallo stealth_mx,

Zitat:
Wenn ich axes benutze dann füllt er mir den Arbeitsspeicher.

Das ist nicht klar. Bitte poste den entsprechenden Code. Wahrscheinlich kann man dann einen Weg finden, wie die Speicher nicht unnötig belastet wird.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
stealth_mx
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 94
Anmeldedatum: 15.06.13
Wohnort: ---
Version: 2013b
     Beitrag Verfasst am: 11.02.2015, 16:00     Titel:
  Antworten mit Zitat      
Hi, ich habe den Fehler selbst entdeckt ich habe mir immer neues axes generiert in der Callbackfunction. Was dazu führte das der Speicher immer voller wurde. Habe ihn jetzt in das GUI ausgelagert und aktualisiere
ggf. das axes in dem Callback

Die Idee:
Code:

% Hintergrund wird nicht verändert
background = imread('background.png');
axesImage = axes('Units','pixel','Position',[325 220 938 400]);
imshow(background , 'Parent', axesImage);

% Soll ein/ausgeblendet werden können
localHandle.Bild = imread('Bild.png');
localHandle.axesImage = axes('Units','pixel','Position',[500 500 30 30]);
guidata(figObj,localHandle);
 


Callbackfunction:
Code:
function SliderAnimation_Callback(src,~)
h = guidata(src);
% Soll nur ganzzahlige Werte annehmen
% Bis jetzt keine schöne Loesung, da der Callback trotzdem durch den Eventlistener viel häufiger aufgerufen wird, als es sein müsste
% Muss dem Slider noch mitteilen, dass er wirklich nur 1. Schritte machen darf
set(h.SliderAnimation,'Value',round(get(src,'Value')));

set(h.axesImage,'Position',[500+round(get(src,'Value')) 500 30 30]);
imshow(h.Bild, 'Parent', h.axesImage);


Hier habe ich probeweise das axes verschoben. Ich möchte allerdings nun den Wert des Sliders(get(src,'Value')) als Zeitvariable nutzen um aus dem Output, der nur low oder high sein kann Bilder auf dem GUI ein bzw. ausblenden. (Je nach Status)

Code:

% Weiter in dem Callback
% temp_var hat die folgende Form: temp_var = [0 0 0 0 0 0 0 0 0 0 1 1 1 1 ...]
temp_var = get(h.ProjectStruct.Simulations.('TestFile').output.get('ABC_Result'),'Data');
if temp_var(round(get(src,'Value')))
% h.Bild einblenden
else
% h.Bild ausblenden
end
 



D.h ich bewege den Schieberegler und wenn temp_var(Wert vom Schieberegler) == 1 ist, dann aktualisiere den Status des Bildes (ein oder aus).
Das wäre die Idee. Insgesamt sind das etwa 10 Grafiken in einer Auflösung von ca 50px50p. Wäre auch gut wenn das irgendwie fließend laufen würde. Mit dem Verschiebungsbeispiel läuft das recht flüssig. alle Grafiken haben auch eine feste Position.
Private Nachricht senden Benutzer-Profile anzeigen
 
stealth_mx
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 94
Anmeldedatum: 15.06.13
Wohnort: ---
Version: 2013b
     Beitrag Verfasst am: 12.02.2015, 10:05     Titel:
  Antworten mit Zitat      
Hallo zusammen,

habe jetzt einen Ansatz,

ich stelle die Visibility von den Kindern der Axes auf off. Mit einem Bild funkioniert es fließend

Code:
temp_var = get(h.ProjectStruct.Simulations.('test').output.get('Thresholds'),'Data');
if temp_var(round(get(src,'Value'))*10+1)
    set(get(h.axesImage,'children'),'visible','on');
else
    set(get(h.axesImage,'children'),'visible','off');
end


Die Frage ist jetzt ob das ne vernünftige Lösung meines Problems ist oder ich hier nur Krücken baue.
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 - 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.