Aide sur les composants gambas

composants

Dessiner des courbes avec GB.CHART

Rédigé par spheris Aucun commentaire
Classé dans : apprentisssage, Composants, Drawarea, gambas 2, Tutoriel Mots clés : chart, gb.chart, courbe

DESSINER DES COURBES AVEC GB.CHART



chart.jpg



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

 
TELECHARGER LE CODE ICI


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