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

ButtonDownFcn nach imshow weg

 

lcpsmiley

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.03.2010, 08:35     Titel: ButtonDownFcn nach imshow weg
  Antworten mit Zitat      
Hallo,
in einer GUI habe ich für ein axes die ButtonDownFcn automatisch generieren lassen. Die sieht wie folgt aus:
Code:

function axes1_ButtonDownFcn(hObject, eventdata, handles)
 



Wenn ich nun ein Bild da rein zeichne mit
Code:


    set(handles.slider1, 'Value', para.frameNummer);
    set(gcf,'name', sprintf('%d/%d %5.1f%%',para.frameNummer, para.filmLength, ...
        100*para.frameNummer/para.filmLength));

    % Aktuelle Bildnummer wird einglesen und in der GUI ausgegeben.
    Im = aviread(para.filmName, para.frameNummer);
   
    axes(handles.axes1);
    imshow(Im.cdata);  % Ausgabe als Grauwertbild.
   
    % Die Properties des axes1 werden neu gesetzt, da nach dem Zeichnen
    % diese zurück gesetzt werden.
    set(handles.axes1, 'ButtonDownFcn', para.axesHandle);
 


funktioniert die ButtonDownFcn nicht mehr, die vorher noch geht.
In para stehen alle nötigen Parameter für das Programm global.
In para.axesHandle steht das Handle auf axes1, was ich mir zu Beginn speichere.

Ich hoffe, mir kann jemand helfen.

Danke im voraus.


Zenon
Forum-Guru

Forum-Guru


Beiträge: 292
Anmeldedatum: 20.01.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.03.2010, 11:29     Titel:
  Antworten mit Zitat      
Ich denke das Problem liegt hier:

Code:

set(handles.axes1, 'ButtonDownFcn', para.axesHandle);
 


Hier überschreibst Du den Verweis auf die ButtonDownFcn, weshalb das Ding nicht mehr gefunden wird...wenn Du hier ein wiederherstellen von ButtonDownFcn aus para.axesHandle versuchst musst Du auch hier mit get(para.axesHandle,'ButtonDownFcn') die Richtige Property auswählen.
Private Nachricht senden Benutzer-Profile anzeigen
 
lcpsmiley

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.03.2010, 11:53     Titel:
  Antworten mit Zitat      
Hallo,
das set....
habe ich nur eingefügt, weil es ohne auch schon nicht ging. In der Funktion beim Öffnen der GUI speichere ich mir mit get... dein Inhalt des Property, um es dann wieder einzutragen. Aber es funktioniert nicht.
 
lcpsmiley

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.03.2010, 11:59     Titel:
  Antworten mit Zitat      
Ich habe das Ganze nun mal mit einem figure ausprobiert,
Code:

iptaddcallback(gcf,'ButtonDownFcn',@filmClick);


da funktioniert alles. Nur mit axes
Code:

iptaddcallback(handles.axes1,'ButtonDownFcn',@filmClick);


gehts nicht. Weiß da jemand warum?
 
lcpsmiley

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.03.2010, 13:03     Titel:
  Antworten mit Zitat      
Hallo, ich wollte euch nur wissen lassen wie es geht:

Ich habe nun den Code so abgeändert:
Code:



    set(handles.slider1, 'Value', para.frameNummer);
    set(gcf,'name', sprintf('%d/%d %5.1f%%',para.frameNummer, para.filmLength, ...
        100*para.frameNummer/para.filmLength));

    % Aktuelle Bildnummer wird einglesen und in der GUI ausgegeben.
    Im = aviread(para.filmName, para.frameNummer);
   
    axes(handles.axes1);

%Änderungen
    hIm = imshow(Im.cdata);  % Ausgabe als Grauwertbild.
   
    % Die Properties des axes1 werden neu gesetzt, da nach dem Zeichnen
    % diese zurück gesetzt werden.
%Änderungen
    set(hIm, 'ButtonDownFcn', para.axesHandle);
 

Ich muss für die Registrierung der Funktion das Imagehandle nehmen, und nicht das axeshandle.
Viele Grüße
Stefan
 
lcpsmiley

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.03.2010, 13:05     Titel:
  Antworten mit Zitat      
Sorry, falschen Code kopiert Rolling Eyes
Code:

    set(handles.slider1, 'Value', para.frameNummer);
    set(gcf,'name', sprintf('%d/%d %5.1f%%',para.frameNummer, para.filmLength, ...
        100*para.frameNummer/para.filmLength));axes(handles.axes1);
   
%Änderungen
    him = imshow(Im.cdata);

    % Die Properties des axes1 werden neu gesetzt, da nach dem Zeichnen
    % diese zurück gesetzt werden.
%Änderungen
    bd = iptaddcallback(him,'ButtonDownFcn',@filmClick);

 


Ich hoffe nun ist es klar.
 
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.