2008年7月13日星期日

openflashchart2 .net 实现的类设计

到目前为止,已经有人用perl ,php实现了openflashchart2的数据层。
此处参考php的实现,来实现.net的结构。不过类的层次继承关系重新组织

以AreaHollow图形为例。
以设计来说,你尽可以做的面面俱到。此处只给出简单的实现,做不得标准:-),另外此处只是实现过程中的设计,或许在实现的过程中会更改:-).
因为此时,我还没有完全实现在.net下的版本。




openflashchart有很多图形,所以给出一个图形的基类ChartBase,方便后面添加多个图形的时候方便。
Title,Legend,都具有Text(名称),Style(样式),此处也让他们共用一个基类。

坐标轴也有一个基类。 OpenflashChart负责整体的控制。


此处的实现,关键的地方是把类转化为相应的JSON结构。采用JSON.net的实现。

最后生成AreaHollow的图像的数据层,将会是这样。
OpenFlashChart.OpenFlashChart chart = new OpenFlashChart.OpenFlashChart();
chart.Title=new Title("AreaHollow");

AreaHollow area = new AreaHollow();
Random random=new Random();
area.Colour = "#0fe";
area.DotSize = 2;
area.Fillalpha = 0.4;
area.Text = "Test";
area.Width = 2;
area.Fontsize = 10;
IList<double> values = new List<double>();
for (int i = 0; i < 12; i++)
values.Add(random.Next(i, i*2));
area.Values = values;
chart.AddElement(area);
XAxis xaxis=new XAxis();
// xaxis.Labels = new AxisLabel("text","#ef0",10,"vertical");
xaxis.Steps = 1;
xaxis.SetRange(0,12);
chart.X_Axis = xaxis;
YAxis yaxis = new YAxis();
yaxis.Steps = 4;
yaxis.SetRange(0,20);
chart.Y_Axis = yaxis;
string s = chart.ToString();
Response.Clear();
Response.CacheControl = "no-cache";
Response.Write(s);
Response.End();

没有评论: