Dessiner des courbes avec GB.CHART( Temps de lecture estimé à 3 min 06 sec )
DESSINER DES COURBES AVEC GB.CHART
Dessiner des graphiques ou des courbes avec gambas c'est possible.
Voici un exemple que j'ai trouvé sur le net.
Vous pouvez vous inspirer du code.
A bientôt
Voici le code de l'application:
' Gambas class file ' ====================================== ' This example is to make a bar chart ' using DrawingArea ' may be it can help you to make a chart ' if you have any question you can send to ' yudi@kecoak.or.id ' Thank You PUBLIC value AS Float[] PUBLIC compt AS Integer PUBLIC etiquette AS Float[] PUBLIC SUB _new() ME.Center END PUBLIC SUB Form_Open() DIM nombre AS Float DIM fichier AS File DIM fichier_de_points AS String fichier_de_points = User.Home &/ "fichier de points.txt" compt = 0 value = NEW Float[] etiquette = NEW Float[] IF NOT Exist(fichier_de_points) THEN message("pas de fichier de données, copier le fichier fichier de points.txt di projet dans votre dossier home") QUIT ENDIF fichier = OPEN fichier_de_points FOR READ WHILE NOT Eof(fichier) compt += 1 LINE INPUT #fichier, nombre value.Resize(compt + 1) etiquette.Resize(compt + 1) value[compt] = nombre etiquette[compt] = nombre WEND CLOSE #fichier FormChart.Show Draw_Chart(0) END PUBLIC SUB Draw_Chart(affichage AS Boolean) DIM i AS Integer DIM skala_1 AS Integer DIM skala_2 AS Integer DIM distance_x AS Float DIM distance_y AS Float DIM old_distance_x AS Float DIM width_draw AS Integer DIM tot AS Integer DIM colors AS Integer[] DIM bottom AS Integer DIM somme_data AS Integer DIM old_value AS Float DIM maximum AS Float colors = NEW Integer[] colors.Resize(compt + 1) FOR i = 1 TO compt somme_data = somme_data + etiquette[i] IF maximum < etiquette[i] THEN maximum = etiquette[i] NEXT IF somme_data = 0 THEN message("pas de dommées") ME.Close ENDIF FOR i = 1 TO compt value[i] = (etiquette[i] / maximum) * 10 NEXT drwchart.Clear draw.Begin(drwchart) skala_1 = drwchart.ClientH / 11 distance_y = drwchart.ClientH - skala_1 bottom = distance_y + 8 FOR i = 0 TO 100 STEP 10 draw.ForeColor = color.black IF NOT affichage THEN TextLabel1.Hide draw.Text(maximum / 100 * i, 0, distance_y) ELSE TextLabel1.Show draw.Text(i, 0, distance_y) ENDIF draw.Line(25, distance_y + 8, drwchart.clientw, distance_y + 8) distance_y = distance_y - skala_1 NEXT draw.Line(30, 0, 30, drwchart.ClientH - 25) skala_2 = (drwchart.ClientW - 30) compt distance_x = skala_2 + skala_2 / 2 '+ 30 width_draw = skala_2 / 2 FOR i = 1 TO compt draw.LineWidth = 1 draw.ForeColor = color.Black draw.Text(i, distance_x - (width_draw / 2) - 4, drwchart.ClientH - 20) IF affichage THEN draw.Line(distance_x - (width_draw / 2), 0, distance_x - (width_draw / 2), drwchart.ClientH - skala_1 + 8) 'bout de ligne : 8 par défaut ELSE draw.Line(distance_x - (width_draw / 2), 0, distance_x - (width_draw / 2), drwchart.ClientH - skala_1 + 20) ENDIF draw.LineWidth = 2 draw.ForeColor = color.RGB(2 * 100, 1 * 10, 1 * 50) tot = skala_1 * value[i] + skala_1 - 8 IF NOT affichage THEN IF old_distance_x = 0 THEN 'pas de dessin ELSE draw.Text(etiquette[i - 1], old_distance_x - (width_draw / 2), old_value - 20) draw.Line(old_distance_x - (width_draw / 2), old_value, distance_x - (width_draw / 2), drwchart.ClientH - tot) ENDIF old_value = drwchart.ClientH - tot old_distance_x = distance_x ENDIF IF affichage THEN draw.LineWidth = width_draw draw.ForeColor = color.RGB(i * 100, i * 10, i * 50) draw.Line(distance_x - (width_draw / 2), bottom, distance_x - (width_draw / 2), drwchart.ClientH - tot) ENDIF distance_x = distance_x + skala_2 NEXT DRAW.End END PUBLIC SUB btnAbout_Click() DIM i AS String i = "<h2>Example to make bar chart</h2>n" i = i & "This example has made by : " & Chr(10) i = i & " Yudi Astira" & Chr(10) i = i & " yudi@kecoak.or.id" & Chr(10) i = i & " necrose #hdteam on Dal.Net" & Chr(10) i = i & "Thank You" message.Info(i, "&Close") END PUBLIC SUB btnClose_Click() ME.Close END PUBLIC SUB PictureBox1_MouseDown() END PUBLIC SUB pourcent_Click() Form_Open() Draw_Chart(1) END PUBLIC SUB nombres_Click() Form_Open() Draw_Chart(0) END