1

Voilà je cherches un contrôle en C# capable d'afficher un arbre n-aires de cette forme environ :
251px-Arbre_AVL.png
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

2

Après une recherche sur Google je suis tombé sur ça :
http://www.asp101.com/articles/jayram/treecontrol/default.asp

Si vous avez mieux n'hésitez pas !!! ^^
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

3

Le control ne supporte disons qu'une profondeur de 4. Au delà ça devient illisible. sad
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

4

Ben tout dépend de ce que tu cherches exacement aussi hein.
Un controle qui affiche un arbre de la manière que tu as montré au début c'est très simple a faire (sous réserve d'avoir un modèle objet correct ^^)
Mais après les écrans de nos pc n'ont pas une résolution infinie, donc faut voir ce que tu veux affichier qui est peut-être un peu plus spécifique que "un arbre n-aire" (Ordre de grandeur de la profondeur, type d'information affichée sur les feuilles, etc...) et ne tient pas forcément entièrement dans un écran d'ordinateur typique.
Après il faut adapter façon de représenter ton arbre a l'écran du pc en fonction de ça. Et pour ça tu trouvera difficilement un contrôle qui fait tout comme tu le veux, sauf si tu traites un cas simpliste (donc tant mieux pour toi), ou si quelqu'un a déjà rencontré la même situation que toi, mais voila tongue

En dehors de ça tu peux regarder sur CodePlex il y a pas mal de projets de types divers et variés, dont entre autres quelques contrôles écrits en C#, tu y trouvera peut-être ton bonheur.
Il y a aussi des tas de trucs intéressant sur The Code Project tu peux faire une recherche on sait jamais... Personellement c'est souvent ici que je trouve, de bonnes indications, si ce ne sont des solutions, à pas mal de problèmes smile
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

5

je ne vois aucun rapport avec la résolution de l'écran confus

6

En mode console j'ai:
topics/66073-dessiner-un-arbre-n-aire

disponible dans le code d'ETP.
Tout ce qui passe pas par le port 80, c'est de la triche.

7

Le problème c'est que je n'ai pas le temps de réinventer la roue. Mon objectif est de développer des algorithmes complets et nombreux de parcours, d'équilibrages... d'arbres et non un modèle objet d'affichage. Mes arbres peuvent avoir une profondeur facilement égale à 50.

J'ai trouvé cette librairie basée sur Graphviz, quelqu'un l'a dékà utilisée ?
http://www.codeproject.com/cs/miscctrl/quickgraph.asp

avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

8

Non. Mais cest pas si pénible que ca d'afficher un arbre à la main, si?
Tout ce qui passe pas par le port 80, c'est de la triche.

9

Tiens, j'ai extrait et nettoyé ce bout de code d'un programme, c'est pas du C# et c'est pas très joli, mais si ça peut t'aider pour l'algo...

8B51

open Graphics
open Printf

module NTree = struct
  type 'a t = O | N of 'a * 'a t * 'a t
    
  let make_random_ntree max_h max_w leaf_builder =
    assert (max_h >= 0 && max_w >= 0) ;
    Random.self_init () ;
    let rec make h w =
      match (Random.float 1.0 > 0.3), h, w with
	| _,     0, _
	| _,     _, 0
	| false, _, _ ->
	    O
	| true,  h, w ->
	    N (leaf_builder (), make (pred h) max_w, make h (pred w))
    in make max_h max_w
	 
  let make_full_ntree max_h max_w leaf_builder =
    assert (max_h >= 0 && max_w >= 0) ;
    let rec make h w =
      match h, w with
	| 0, _ | _, 0 ->
	    O
	| h, w ->
	    N (leaf_builder (), make (pred h) max_w, make h (pred w))
    in make max_h max_w

  let height t =
    let rec height t acc cur cont =
      match t, cont with
	| O, [] ->
	    max acc cur
	| O, (nt, ncur) :: ncont ->
	    height nt (max acc cur) ncur ncont
	| N (_, l, r), _ ->
	    height l acc (succ cur) ((r, cur) :: cont)
    in height t 0 0 []
	 
  let width t =
    let rec width t acc cont =
      match t, cont with
	| O, [] ->
	    acc
	| O, nt :: ncont ->
	    width nt acc ncont
	| N (_, O, r), _ ->
	    width O (succ acc) (r :: cont)
	| N (_, l, r), _ ->
	    width l acc (r :: cont)
    in width t 0 []

  let map_on_brothers t f =
    let rec map acc t =
      match t with
	| O -> acc
	| N (v, l, r) -> map (f v l :: acc) r
    in map [] t
	 
  let draw t to_string =
    let w,h = width t, height t in
      open_graph (sprintf " %dx%d" (w * 24 + 10) (h * 24 + 10)) ;
      let rec draw t x y lx ly =
	let b = map_on_brothers t (fun x l -> (x, l)) in
	let rec iterx l x =
	  match l with
	    | (v,l) :: tl ->
		let w = max 24 ((width l) * 24) in
		let tv = to_string v in
		let tw,th = text_size tv in
		  set_color red;
		  moveto lx (ly + 8) ;
		  lineto (x + ((w - 24) / 2) + 12) (y + 12) ;
		  set_color white;
		  fill_circle (x + ((w - 24) / 2) + 12) (y + 12) 8 ;
		  set_color black;
		  draw_circle (x + ((w - 24) / 2) + 12) (y + 12) 8 ;
		  moveto (x + ((w - 24) / 2) + 12 - tw / 2) (y + 12 - th / 2) ;
		  draw_string tv ;
		  draw l x (y + 24) (x + ((w - 24) / 2) + 12) (y + 12);
		  iterx tl (w + x)
	    | [] -> ()
	in iterx b x
      in
	draw t 5 5 (w * 24 / 2) (-5);
	ignore (wait_next_event [Key_pressed ; Button_up ]);
	close_graph ()
end

open NTree

let _ = draw (make_random_ntree 6 3 (fun x -> Random.int 25)) string_of_int
avatar
fabetal_ > Hier, je me suis fait monter par un pote
redangel > et en chevals, ça donne quoi?
Nil> OMG I think I'm gay

10

td-06.png
td-07.png
Le code est au chaud sur mon pc si jamais tongue
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

11

z-ont l'air pas mal cest deux outils smile
Tout ce qui passe pas par le port 80, c'est de la triche.

12

Merci à vous deux, j'ai suivi le conseil de Onur et j'ai donc développé mon algo en C#.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

13

Tu nous montreras un ptit screen shot ? smile
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

14

ABR.PNG cheeky
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

15

-
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

16

sympa
Tout ce qui passe pas par le port 80, c'est de la triche.

17

Sympa aussi.
Mais ça doit quand même être un défi intéressant de voir comment optimiser l'a taille horizontale d'un arbre...
avatar
Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.