Dessiner des courbes avec GB.CHART
Rédigé par spheris
Aucun commentaire
Classé dans : apprentisssage, Composants, Drawarea, gambas 2, Tutoriel
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