4.4.2.4 绘制整个图表

来源:互联网 发布:hg8245修改mac地址 编辑:程序博客网 时间:2024/06/01 07:42

4.4.2.4 绘制整个图表

 

在讨论第二个绘图函数之前,我们先看一下如何把内容组织到一起。图 4.2 分别显示每个层次:我们已经写好了代码绘制左图的代码,还差绘制右图标签的函数。

图 4.2 绘制图表的两个阶段:第一阶段使用 drawPieSegment 函数(左),第二阶段使用 drawLabel 函数(右图)。图表显示的是 1900 年世界人口分布情况。

 

绘制图表的代码,首先从文件加载数据,然后,进行处理,与[前面讨论的]控制台程序相同。只是现在数据不输出到控制台,面是使用前面介绍的函数,绘制图表。可以看到,在清单 4.10 中是绘图函数 drawChart 的内容。

 

清单 4.10 绘制图表(F#)

let drawChart(file) =

  letlines = List.ofSeq(File.ReadAllLines(file)) |  加载,

  letdata = processLines(lines)             |  处理数据

  letsum = float(calculateSum(data))        |

 

  letpieChart = new Bitmap(600, 400)    |  创建绘图用的

  letgr = Graphics.FromImage(pieChart)  |  位图和对象

  gr.Clear(Color.White)

  drawStep(drawPieSegment,gr, sum, data)  [1]

  drawStep(drawLabel,gr, sum, data)    [2]

 

  gr.Dispose()  <-- 最后,绘制

  pieChart

 

函数的参数为 CSV 文件名,返回在内存中(in-memory)饼图的位图。在代码中,我们首先加载文件,用已有的 processLines 和 calculateSum 函数进行处理;然后,绘制图表,在最后一行,返回创建的位图,作为函数的结果。

要绘制所有内容,首先要创建一个 Bitmap 对象,和一个相关联的 Graphics 对象。我们在前面所有的函数中,都是用 Graphics 来绘图的,因此,这个对象创建后,就可以用白色背景填充位图,再用 drawStep 函数绘制图表。第一次调用[1],使用 drawPieSegment绘制饼图,第二次调用[2],使用 drawLabel绘制文本标签。可以尝试注释掉其中的一行,只绘制出一个阶段的内容,得到与图 4.2 相同的结果。我们还没有实现 drawLabel 函数,因为我们想首先展示整个绘图的过程,现在已经完成了这部分的应用程序了。

0 0
原创粉丝点击