IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques Discussion :

Sélectionner une partie d'une courbe


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 43
    Par défaut Sélectionner une partie d'une courbe
    Bonjour à tous,

    Je réalise une interface graphique qui a pour but de sélectionner une partie d'une courbe affichée.
    Je mets 2 curseurs type datacursor et je souhaite ensuite récupérer les coordonnées de ces curseurs.

    Mais j'ai plusieurs pb et questions :

    1) Comment savoir quel curseur je suis en train de déplacer ?
    2) Est-il possible de récupérer les coordonnées de TOUS les curseurs en une seule fois (comme si on le faisait avec "Export Data Cursor to Workspace")
    3) Est-il possible de placer un Data Cursor en spécifiant des coordonnées ?
    4) Existe-t-il une alternative aux Data Cursors ? Quelque chose qui serait facilement manipulable en ligne de code ?

    Merci d'avance pour vos réponses,
    Steve

  2. #2
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Par défaut
    Bonjour,

    N'ayant pas MATLAB pour faire les tests, je ne répondrais qu'à la 4ème question:
    - Une alternative consiste à définir toi-même tes curseurs sous forme de lignes (verticales en général) dont tu codes entièrement le comportement. Evidemment l'inconvénient est qu'il faut tout coder mais l'avantage qui en découle est que tu contrôles entièrement le comportement.
    Personnellement c'est ce que j'utilise...

    En espérant avoir fait avancer le schmilblick.

    Bonne journée,
    Duf

  3. #3
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Citation Envoyé par steve-movi Voir le message
    Je mets 2 curseurs type datacursor
    Comment tu fais ? Je n'arrive désespérément qu'à en mettre un

    Citation Envoyé par steve-movi Voir le message
    1) Comment savoir quel curseur je suis en train de déplacer ?
    En admettant que tu puisses en mettre 2 tu va utiliser pour chacun sa propre (ou même la même) UpdateFcn qui aura en 1er argument le handle de l'objet concerné

    Citation Envoyé par steve-movi Voir le message
    2) Est-il possible de récupérer les coordonnées de TOUS les curseurs en une seule fois (comme si on le faisait avec "Export Data Cursor to Workspace")
    Ben là je n'arrive pas à voir comment on peut en avoir plusieurs mais a priori pourquoi pas ?
    Quoique les propriétés de position n'ont pas l'air d'être accessibles par le handle de l'objet mais par le "event" dans la UpdataFcn...
    On a déjà eu une grande discussion là-dessus si tu as le courage :
    Pointeur souris sur figure

    Citation Envoyé par steve-movi Voir le message
    3) Est-il possible de placer un Data Cursor en spécifiant des coordonnées ?
    Je n'ai pas l'impression. Toujours le même problème la propriété Position n'est pas sur l'objet DataCursor mais sur "event" (je mets entre guillemets car je n'arrive pas à voir ce que ça représente), et cette propriété est de toute façon en read-only donc non modifiable.

    Citation Envoyé par steve-movi Voir le message
    4) Existe-t-il une alternative aux Data Cursors ? Quelque chose qui serait facilement manipulable en ligne de code ?
    Euh...surement.

    Si c'est pour sélectionner une partie de courbe tu peux peut-être tout simplement créer 2 barres (objet Line) verticales.
    C'est pas non plus super simple il faudra utiliser les Button*Fcn (*=Down et Release je crois).

    Enfin problème pas évident...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 43
    Par défaut
    Pour ajouter un autre cursor ==> clic droit et "Creatre New Datatip"

  5. #5
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Bon en fouillant (mais c'est vraiment du bidouillage), en fait le datacursormode crée un objet de Type hggroup.

    Si tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    h=findall(gca,'type','hggroup')
    Retourne les handles des objets qui font les Data Cursor : tu peux le voir en récupérant les propriétés String (où tu as ce que tu veux mais qu'il faudra décomposer).

    Bizarrement il n'y a pas de propriété Position donc seule la propriété String pourra être utilisée (pour ce que j'ai fouillé).

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 43
    Par défaut
    Ok merci.
    Mais je vais essayer de coder quelque chose de A à Z qui utilise des lignes verticales pour visualiser la sélection sur la courbe.
    Y-a-t-il la possibilité de déplacer ces lignes verticales avec la souris ? Ou est-ce plus simple de faire se déplacer la ligne avec quelque chose du type Slider ?

  7. #7
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Par défaut
    Comme l'a dit Caro, il te faut utiliser la propriété ButtonDownFcn de la line.

    Par exemple (à mettre dans une fonction):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
     
    plot(ax_hdl, [0,0], [-1,1], 'ButtonDownFcn', @(obj, evt) click_on_line(obj))
    set(ax_hdl, 'XLimMode', 'manual', 'YLimMode', 'manual');
     
    function click_on_line(hObject)
     
    % Change windows properties
    set(ancestor(hObject, 'figure'), 'WindowButtonMotionFcn', @(obj, evt) move_line(obj), 'WindowButtonUpFcn', @(obj, evt) release_line(obj));
     
    function release_line(hObject)
     
    % Change windows properties
    set(hObject, 'WindowButtonMotionFcn', [], 'WindowButtonUpFcn', []);
     
    function move_line(hObject)
     
    % Get mouse pointer position
    position = get(ancestor(hObject, 'axes'), 'CurrentPoint');
     
    % Change line position
    set(hObject, 'XData', [position(1), position(1)]);
    Voilà, à tester, j'espère ne pas m'être trop trompé

    Bon courage,
    Duf

  8. #8
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Aaargh j'ai fouillé pour rien non je rigole c'est toujours bien d'apprendre des nouveaux trucs

    Citation Envoyé par steve-movi Voir le message
    Y-a-t-il la possibilité de déplacer ces lignes verticales avec la souris ?
    Oui (c'est ce que j'ai dis...) avec la propriété ButtonDownFcn.
    Et peut-être la WindowButtonUpFcn de la Figure.
    Je n'arrive plus à me souvenir comment on récupère le fait que le bouton de la souris est relâché...ça va peut-être me revenir.

    [EDIT]Ah ben c'est bien ça, merci Duf

    Citation Envoyé par steve-movi Voir le message
    Ou est-ce plus simple de faire se déplacer la ligne avec quelque chose du type Slider ?
    A mon avis même degré de difficulté, et avec un slider ça risque d'être moins fin (ou pas )

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. donner une couleur a une partie d'une forme
    Par ralf91 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 04/04/2008, 17h02
  2. Réponses: 1
    Dernier message: 04/04/2008, 12h14
  3. Sélectionner seulement une partie d'une valeur d'une cellule
    Par ArthurO0O dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/08/2007, 11h05
  4. masquer une partie d'une vidéo par une banniere
    Par lezabour dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 16/10/2006, 16h47
  5. copier une partie d'une image vers une autre
    Par gregcat dans le forum Langage
    Réponses: 1
    Dernier message: 14/04/2006, 13h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo