4.4.2.5 添加文本标签

728 篇文章 1 订阅
349 篇文章 0 订阅

4.4.2.5 添加文本标签

 

我们已经实现了第一个绘图函数,第二个函数也应有同样的签名,以便可以参数值传递给统一的 drawStep 函数。我们在代码中唯一要做的就是绘制标签,计算其位置,如清单 4.11。

 

清单 4.11 绘制文本标签 (F#)

let fnt = new Font("Times NewRoman", 11.0f)

 

let centerX, centerY = 300.0, 200.0   |  定义饼图属性

let labelDistance = 150.0           |

 

let drawLabel(gr:Graphics, title,startAngle, angle) =

  letlblAngle = float(startAngle + angle/2)   [1]

  letra = Math.PI * 2.0 * lblAngle / 360.0    [2]

  letx = centerX + labelDistance * cos(ra)

  lety = centerY + labelDistance * sin(ra)

  letsize = gr.MeasureString(lbl, fnt)                         |  获得边框

  letrc = new PointF(float32(x) - size.Width / 2.0f,              | 绘制标签

                  float32(y) - size.Height /2.0f)             |

  gr.DrawString(title,fnt, Brushes.Black, new RectangleF(rc, size)) |

 

我们首先声明一个顶层的字体值,用于绘制文本。这样做是因为,我们不想在每次的函数调用时,都初始化字体的一个新实例。由于字体在应用程序的整个生存期内都需要,因此,我们不显式地释放;当应用程序退出时,.NET 会为我们释放它。函数的前几行代码计算标签的位置。

第一行[1]计算的角度(以度为单位),它指定饼图扇区所占部分的中心,取扇区的起始角度,加上扇区的一半,作为标签的中心。第二行[2]将角度转换成以弧度表示,有了以弧度表示的角以后,就可以使用三角函数 cos 和 sin,计算出标签的 X 和 Y 坐标。我们使用 MeasureString 方法估算文本标签的大小,计算出绘制文本边框的位置,前面计算的 X 和 Y 坐标作为边框的中心。

现在,我们已经完成了绘制文本标签的代码,整个代码就能绘制饼图了。在早先的清单 4.10 中,实现的关键函数(drawChart),执行图表的绘制,函数取 CSV 文件的文件名作为参数值,返回图表的位图。我们现在是所有要做的,就是添加从用户界面调用这个函数的代码。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值