Quelqu'un sait comment faire un diagramme en batons.
j'ai cru voir que l'on pouvait le faire avec la fonction TCHAR ou encore en utilisant les propriétré moveTo ou LineTo
Quelqu'un sait comment faire un diagramme en batons.
j'ai cru voir que l'on pouvait le faire avec la fonction TCHAR ou encore en utilisant les propriétré moveTo ou LineTo
Regarde dans l'onglet Exemples (ou Samples) de la palette de composants. Il y a un composant adapté pour ça normalement.
Sinon, oui, tu peux le faire à la main. Il suffit de savoir dessiner des rectangles (voir Canvas.FillRect).
@++
Salut,
Sur ta fiche, tu mets un TPaintBox, et dans son évènement OnPaint, tu places le code qui dessine ton diagramme :
En regardant un peut l'aide Delphi et les exemples qui y sont présentés, du coté de TCanvas et TPaintBox, tu devrais t'en sortir.
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
23
24
25
26
27
28
29
30
31
32
33 procedure TForm1.PaintBox1Paint(Sender: TObject); var Largeur,Hauteur:integer; begin //Le code qui dessine ton diagramme se trouve ici. //Le dessin s'effectue sur le Canvas de la PaintBox //Il peut être utile de récupérer la Hauteur et la Largeur de la PaintBox : Largeur:=PaintBox1.ClientWidth; Hauteur:=PaintBox1.ClientWidth; //Suivent ici, quelques méthodes de TCanvas qui te permettront de //dessiner un histogramme. //Si tu as besoin de tracer des axes : PaintBox1.Canvas.MoveTo(...); //déplace le crayon PaintBox1.Canvas.LineTo(...); //dessine un trait //Si tu as besoin d'écrire des choses (légendes, étiquettes, etc) : PaintBox1.Canvas.TextOut(...); //Pour mesurer un texte avant de le dessiner (pour le placer //correctement), tu as à ta disposition //TCanvas.TextWidth(...) et TCanvas.TextHeight(...) //Pour changer les couleurs de Dessin PaintBox1.Canvas.Brush.Color:=clRed; //change la couleur de la brosse PaintBox1.Canvas.Pen.Color:=clBlue; //change la couleur du crayon //Pour dessiner des rectangles PaintBox1.Canvas.FrameRect(...);//dessine le cadre d'un rectangle non rempli (Couleur du trait=couleur de la brosse en cours) PaintBox1.Canvas.Rectangle(...);//dessine un rectangle plein avec une bordure (Couleur du Trait=Crayon; Remplissage=Brosse) PaintBox1.Canvas.FillRect(...); //Remplie une zone rectangulaire (Couleur=celle de la brosse) end;
Après, c'est juste une question d'algorithme qui transforme tes données en dessin.
Une fois que tu auras réussi à dessiner ce que tu veux dans ta PaintBox, il ne te sera pas trop difficile de dessiner ton graphique dans un TBitmap (en dessinant dans son canvas, comme pour la PaintBox).
Ceci aura de multiples avantages :
- C'est toi qui choisi la taille de ta surface de dessin :
initialisation de TonBitmap.Width et TonBitmap.Height
- tu pourras sauver ton graphique dans un fichier .bmp (TonBitmap.SaveToFile()
- tu pourras toujours afficher ton copier ton bitmap dans ton TPaintBox (avec TPaintBox.Canvas.StretchDraw(..) ) :
- Ou tu pourras l'imprimer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 procedure TForm1.PaintBox1Paint(Sender: TObject); begin PaintBox1.Canvas.StretchDraw(PaintBox1.ClientRect,TonBitmap); end;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 uses Printer; ... procedure TForm1.Button1Click(Sender: TObject); begin withPrinter do begin BeginDoc; Canvas.StretchDraw(Rect(0,0,PageWidth,PageHeight),TonBitmap); EndDoc; end; end;
Bref, une fois que tu auras compris cette histoire de propriété Canvas que tu trouve un peu partout dans les "objets" Delphi et qui te permet de dessiner ce que tu veux, un monde nouveau s'ouvrira à toi![]()
Bon dev![]()
Partager