Bonjour,
Je pense que vous n'allez pas me comprendre.
Depuis hier , J'ai developpé en C une librairie qui à pour fonction de générer un labyrinthe à 45° , avec possibilité de fixation de son echelle.
En delphi , je dessine le labyrinthe généré expérimentalement par ma librairie.
J'ai joint une image d'un labyrinthe en test expérimental, les lignes bleus sont des chemins et non des murs.
Je souhaiterai le dessiner avec l'épaisseur des chemins paramétrable (voir exemple.jpg), et je ne sais pas faire.
Sachant que le générateur m'envoie une liste de points décrivant le chemins
Code delphi : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 type tvecteur=record x,y : word; end;
La fonction putp appelée par ma librairie, à chaque fois qu'un chemin est dessiné, elle envoie donc les coordonnée x y de point du chemin.
La fonction putp appelée selon le nombre de chemins qu'il y a.
Après je les relie, en reliant chaque point.
Code delphi : 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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 procedure putp( nombre : word;_pv : pvecteur); stdcall; type tatv=array[0..0] of tvecteur; patv=^tatv; var p : ptl; d : byte; n,xde,yde,xa,ya : word; pv : patv; begin pv := ptr(longword(_pv)); xde := pv[0].x; yde := pv[0].y; for n := 1 to nombre-1 do begin p := nil; reallocmem(p,sizeof(ttl)); p^.xde := xde*fscale; p^.yde := yde*fscale; p^.central := true; //vecteur décrivant le chemin xde := pv[n].x; yde := pv[n].y; p^.xa := xde*fscale; p^.ya := yde*fscale; objtl.Add(tobject(p)); end; end; procedure tform1.rafraichirlab; var xf,yf : integer; n,rx,ry : integer; d : byte; p : ptl; begin for n := 0 to objtl.count-1 do begin p := ptl(objtl.items[n]); if (p^.central) then //le chemin image1.canvas.pen.color := clblue else image1.canvas.Pen.color := clblack; //son epaisseur image1.canvas.MoveTo(p^.xde*8,p^.yde*8); image1.canvas.LineTo(p^.xa*8,p^.ya*8); end; end;
Dans l'image exemple.jpg la fonction putp serait appelée que 2 fois.
Ca marche , le labyrinthe s'affiche ; mais je souhaiterai faire une fonction pour dessiner l'épaisseur (p^.central=false).
Merci ;
Partager