vb.net 教程 5-12 绘图实例之统计图 3 饼图

本文详细介绍使用VB.NET绘制饼图的方法,包括设置各部分所占比例、颜色填充及角度计算等步骤,并提供了完整的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。
继续上一期《绘图实例之统计图2》,继续讲解如何绘制饼图:

当按下“饼图”按钮时,调用三个函数,分别是绘制饼图、显示到窗口,由于不需要坐标轴,所以这里不再绘制坐标轴:

    Private Sub btnPie_Click(sender As Object, e As EventArgs) Handles btnPie.Click
        Call DrawPie()
        Call DrawToForm()
    End Sub

DrawToForm()在之前已经介绍,以下是DrawPie的代码:

    '绘制饼图
    Private Sub DrawPie()
        '标注每个季度
        Dim seasonValue(3) As Integer
        seasonValue(0) = nudSeason1.Value
        seasonValue(1) = nudSeason2.Value
        seasonValue(2) = nudSeason3.Value
        seasonValue(3) = nudSeason4.Value
        Dim seasonName() As String = {"一季度", "二季度", "三季度", "四季度"}
        '我们要获得4个季度总的盈利
        Dim seasonSum As Integer = 0
        For i As Integer = 0 To 3
            seasonSum += seasonValue(i)
        Next
        '根据总赢利情况,来获得每个季度在饼图中所占的份额(角度)
        '为了简化起见,这里直接取整数
        Dim seasonAngle(4) As Integer
        seasonAngle(0) = 0
        seasonAngle(1) = seasonValue(0) * 360 \ seasonSum
        seasonAngle(2) = seasonValue(1) * 360 \ seasonSum + seasonAngle(1)
        seasonAngle(3) = seasonValue(2) * 360 \ seasonSum + seasonAngle(2)
        seasonAngle(4) = 360
        '分别用4种颜色表示不同季度的盈利--http://blog.csdn.net/uruseibest
        Dim seasonColor() As Color = {Color.Red, Color.Blue, Color.Green, Color.GreenYellow}
        For i As Integer = 0 To 3
            g.FillPie(New SolidBrush(seasonColor(i)), New Rectangle(100, 100, 200, 200), seasonAngle(i), seasonAngle(i + 1) - seasonAngle(i))
            '饼图中特别需要说明每个季度对应的颜色
            g.FillRectangle(New SolidBrush(seasonColor(i)), New Rectangle(360, i * 50 + 80, 60, 40))
            '标出每个季度
            g.DrawString(seasonName(i), New Font("宋体", 12), New SolidBrush(Color.Black), New Point(450, i * 50 + 90))
        Next

    End Sub


按下“饼图”按钮时,如下图所示:

需要强调的是FillPie()最后两个关于角度的参数:
第1个角度参数(startAngle):扇形起始角度,是构成扇形的第一条边从x轴方向按照顺时针旋转的角度。
第2个角度参数(sweepAngle):扇形第二条边从第一条边按照顺时针方向旋转的角度

 

 

 

由于.net平台下C#和vb.NET很相似,本文也可以为C#爱好者提供参考。

学习更多vb.net知识,请参看 vb.net 教程 目录

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.Net学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值