The original code
came from Scott Guthrie's chart engine example. The
differences from original code are:
- Some of chart's attributes
are exposed as properties.
-
ChartGenerator.ChartLine.Color
-
ChartGenerator.ChartLine.Style
-
ChartGenerator.ChartLine.Width
- The above are used for
setting the properties of each line from chart.
-
ChartGenerator.Engine.ImageBackgroundColor
-
ChartGenerator.Engine.ImageHeight
-
ChartGenerator.Engine.ImageWidth
-
ChartGenerator.Engine.IsScaled - determines when
the chart will be scaled or not.
- The minimum and maximum
points are calculated inside using Array methods. We
copied the Y values of each line into an array,
sorted the array and using the first and the last
member of array determined the maximum and the
minimum.
Testing code:
.....
Imports
ChartEngine.ChartGenerator
.....
'initing
the chart's data
Dim myChartData
As
New ChartData
Dim XValues
As
Long() = {1, 2, 3,
4, 5, 6, 7, 8, 9}
myChartData.XValues = XValues
'line 1
Dim Line1
As
New ChartLine
Dim YValues1
As
Long() = {1280,
1280, 1280, 1270, 1270, 1280, 1270, 1260, 1260}
Line1.ChartLine.LinesValues = YValues1
myChartData.Lines.Add(Line1)
'line 2
Dim Line2
As
New ChartLine
Dim YValues2
As
Long() = {1200,
1180, 1296, 1370, 1257, 1120, 1270, 1230, 1290}
Line2.ChartLine.LinesValues = YValues2
Line2.Color = Color.Yellow
Line2.Width = 2
Line2.Style = Drawing.Drawing2D.DashStyle.Dash
myChartData.Lines.Add(Line2)
'calling the engine
Dim oEngine
As
New
ChartEngine.ChartGenerator.Engine
oEngine.ImageHeight = 200
oEngine.ImageWidth = 300
oEngine.IsScaled =
True
oEngine.ImageBackgroundColor = color.LightGray
'
Render BitMap Stream Back To Client
Dim StockBitMap
As Bitmap =
oEngine.DrawChart(myChartData)
StockBitMap.Save(Response.OutputStream, ImageFormat.JPEG)
.....
and the testing code for C# version of engine:
.....
using ChartGenerator;
.....
ChartData myChartData =
new ChartData() ;
float[] XValues = {1, 2, 3,
4, 5, 6, 7, 8, 9};
myChartData.XValues = XValues;
//line 1
ChartLine Line1 =
new ChartLine ();
float[] YValues1 = {1280,
1280, 1280, 1270, 1270, 1280, 1270, 1260, 1260};
Line1.Values = YValues1;
Line1.Color = Color.Black ;
myChartData.Lines.Add(Line1);
//line 2
ChartLine Line2 =
new ChartLine ();
float[] YValues2 ={1200,
1180, 1296, 1370, 1257, 1120, 1270, 1230, 1290};
Line2.Values = YValues2;
Line2.Color = Color.Yellow ;
Line2.Width = 2;
Line2.Style = DashStyle.Dash;
myChartData.Lines.Add(Line2);
//calling the engine
ChartGenerator.Engine
oEngine =
new
Engine();
oEngine.ImageHeight = 200;
oEngine.ImageWidth = 300;
oEngine.ImageBackgroundColor = Color.LightGray ;
oEngine.IsScaled = true
;
//
Render BitMap Stream Back To Client
Bitmap StockBitMap =
oEngine.DrawChart(myChartData);
StockBitMap.Save(Response.OutputStream, ImageFormat.JPEG);
and the result is:
You can easily add the code for grid and axis to have a
ready-for-production engine.