Ho provato a creare un semplice programmetto di test del componente in questione, ma mi da' errore (null object error). Forse sono un po' arrugginito con gambas!
Il programma è composto da un bottone (che crea il grafico), una form , una drawing area.
' Gambas class file
PUBLIC SUB _new()
END
PUBLIC SUB Form_Open()
END
PUBLIC SUB Button1_Click()
SetMyChart
END
SUB SetMyChart()
DIM mychart AS Chart
mychart.Headers = ["a", "b", "c"]
mychart[0].Values = [1.0, 2.0, 3.0]
mychart.Title = "Chart test"
mychart.Legend.Visible = TRUE
mychart.Legend.Title = "My legend"
mychart.Type = ChartType.Lines
mychart.Style = ChartStyle.Custom
mychart.Colors.Values = [Color.Yellow, Color.Red, Color.Blue]
mychart.Width = DrawingArea1.ClientHeight
mychart.Height = DrawingArea1.ClientWidth
mychart.Draw
END
queste istruzioni mi danno errore all'istruzione draw: NO CURRENT DEVICE
gli errori iniziali non ci sono piu'...
PUBLIC SUB Button1_Click()
DIM mychart AS NEW Chart
mychart.Headers.Add("a")
mychart.Headers.Add("b")
mychart.Headers.Add("c")
mychart[0].Values.Add(1.0)
mychart[0].Values.Add(2.0)
mychart[0].Values.Add(3.0)
mychart.Title.Text = "Chart test"
mychart.Legend.Visible = TRUE
mychart.Legend.Title = "My legend"
mychart.Type = ChartType.Lines
mychart.Style = ChartStyle.Custom
mychart.Colors.Values = [Color.Yellow, Color.Red, Color.Blue]
mychart.Width = DrawingArea1.ClientHeight
mychart.Height = DrawingArea1.ClientWidth
mychart.Draw
END
Manca il draw.begin() e il draw.end()
PUBLIC SUB Button1_Click()
DIM myChart AS NEW Chart
mychart.Headers.Add("a")
mychart.Headers.Add("b")
mychart.Headers.Add("c")
mychart[0].Values.Add(1.0)
mychart[0].Values.Add(2.0)
mychart[0].Values.Add(3.0)
mychart.Title.Text = "Chart test"
mychart.Legend.Visible = TRUE
mychart.Legend.Title = "My legend"
mychart.Type = ChartType.Lines
mychart.Style = ChartStyle.Custom
mychart.Colors.Values = [Color.Yellow, Color.Red, Color.Blue]
Draw.Begin(DrawingArea1)
myChart.Width = DrawingArea1.ClientHeight
myChart.Height = DrawingArea1.ClientWidth
TRY myChart.Draw()
Draw.End
END
NOTA: alla fine ho messo un TRY prima di mychart.draw, perché senza si blocca
con un errore 'division by zero'.
è esattamente come ha detto ceskho, per precisare, w e h sono le dimensioni dell' immagine che si vuole ottenere.
il risultato della funzione è una picture che può essere salvata, o usata direttamente in un contenitore (es picturebox
grafico.torta(valore AS String, w AS Integer, h AS Integer) AS Picture
il modulo è ancora da completare con una leggenda