- From: Dafflon Yaroslaw <Yaroslaw.Dafflon AT edu.hefr.ch>
- To: "graphstream-users AT litislab.fr" <graphstream-users AT litislab.fr>
- Subject: RE : rapprocher les noeuds / les mettre au 1er plan
- Date: Fri, 24 Jun 2011 09:46:29 +0200
- Accept-language: fr-FR, fr-CH
- Acceptlanguage: fr-FR, fr-CH
bonjour,
je peux vous montrer ma méthode qui sélectionne les noeud et les regroupes
mais je vais pas vous envoyer le programme car il est assez gros et va
chercher les informations sur une base de données.
voila ma méthode je sais pas si vous pouvez plus m'aider avec :
// MISE EN EVIDENCE D'UN NOEUD, DE SES VOISINS ET DE LEURS LIENS
public void setActiveNode(String as){
Node n;
// RETOUR A LA NORMALE DU NOEUD CHOISI PRECEDEMMENT
if(this.activeNode != null){
n = this.activeNode;
for(Edge e:n.getEachEdge()) {
e.setAttribute("ui.color", 0); // Couleur
noeud
e.getOpposite(n).setAttribute("ui.color", 0);
// Couleur voisin
e.setAttribute("ui.size", 1); // Largeur lien
}
n.setAttribute("ui.color", 0); // Couleur neoud actif
}
// MISE EN EVIDENCE
n = this.activeNode = g.getNode(as); // Changement noeud actif
for(Edge e:n.getEachEdge()) {
e.setAttribute("ui.color", 0.5);
e.getOpposite(n).setAttribute("ui.color", 0.3);
e.setAttribute("ui.size", 2);
e.setAttribute("layout.weight", 0.1);//attire les
noeuds
}
n.setAttribute("ui.color", 1);
}
merci
salutation
Dafflon Yaroslaw
________________________________________
De : Antoine Dutot
[antoine.dutot AT gmail.com]
Date d'envoi : jeudi, 23. juin 2011 14:21
À :
graphstream-users AT litislab.fr
Objet : Re: rapprocher les noeuds / les mettre au 1er plan
Bonjour,
Le 22 juin 2011 11:08,
<yaroslaw.dafflon AT edu.hefr.ch<mailto:yaroslaw.dafflon AT edu.hefr.ch>>
a écrit :
bonjour,
je souhaite rapprocher les nœuds sélectionnés dans mon application et les
mettre au premier plan.
j'ai utilisé : e.setAttribute("layout.weight", 0.1);//attire les noeuds e=Edge
C'est la bonne méthode, cela devrait fonctionner. Cependant,
l'algorithme de mise en forme automatique du graphe est basé sur un système de
forces "attraction/répulsion", et certains arcs sont plus ou moins longs. Le
poids
change cette longueur mais ne permet pas d'assigner la même longueur à tous
les
arcs.
Si vous avez un exemple plus complet, on peut éventuellement tester, si vous
le désirez.
mais les nœuds ne se rapproche pas, je dois le faire autrement?
Ma deuxième question serait de savoir comment mettre les nœuds au premier
plan, dans mon application qui comporte plein de nœuds, je voudrais en mettre
certains au premier plan mais je n'ai pas trouvé d'attribut pour cela. Il y en
a?
Vous pouvez utiliser une feuille de style avec la propriété "z-index".
L'afficheur dessine
les éléments du graphe dans un ordre "Z" particulier, on peut voir cela comme
des calques.
Si un objet a un niveau Z élevé il est dessiné au dessus de ceux qui ont un
niveau Z bas.
Par défaut, tous les arcs sont au niveau 1 et tous les nœuds au niveau 2.
(
http://graphstream-project.org/doc/Tutorials/GraphStream-CSS-Reference_1.0/#properties-common-to-nodes-edges-and-sprites)
En revanche deux objets qui ont le même niveau Z sont dessinés dans un ordre
arbitraire. Pour
éviter cela, grosso-modo, vous pouvez procéder ainsi:
...
// Au début du programme.
graph.addAttribute("ui.stylehseet", "node.important { z-index: 10; }");
...
// Lors de la création des nœuds ou quand vous souhaitez les mettre au
premier plan, lors de
// la sélection par exemple:
node.addAttribute("ui.class", "important");
Salutations
Antoine
Archives gérées par MHonArc 2.6.16.