You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Framework中如何绘制随机数组的柱状图?

问题修复与白色柱状图实现方案

一、先解决数组显示问题

你的btnDisplayArray_Click方法存在未定义变量j,且未遍历数组拼接所有元素,导致只能显示单个值。修改后可完整显示数组所有元素:

Private Sub btnDisplayArray_Click(sender As Object, e As EventArgs) Handles btnDisplayArray.Click
    ' 用逗号分隔拼接数组所有元素
    txtDisplay.Text = String.Join(", ", nums)
End Sub

二、实现白色柱状图绘制功能

利用WinForms的Graphics类绘制白色柱状图,以下是完整修改后的代码:

Public Class FormSortingAlgorithm
    Dim rnd As New Random()
    Dim nums() As Integer
    ' 绘图参数定义
    Private Const BarWidth As Integer = 20 ' 单根柱子宽度
    Private Const Margin As Integer = 15 ' 图表边距
    Private Const MaxBarHeight As Integer = 320 ' 数值100对应的柱子最大高度

    Private Sub btnGenerate_Click(sender As Object, e As EventArgs) Handles btnGenerate.Click
        ReDim nums(19) ' 创建20个元素的数组
        For i = 0 To nums.Length - 1
            nums(i) = rnd.Next(0, 100) ' 生成0-99的随机整数
        Next
        Me.Invalidate() ' 触发窗体重绘,刷新柱状图
    End Sub

    Private Sub btnDisplayArray_Click(sender As Object, e As EventArgs) Handles btnDisplayArray.Click
        txtDisplay.Text = String.Join(", ", nums)
    End Sub

    ' 窗体Paint事件负责绘制柱状图
    Private Sub FormSortingAlgorithm_Paint(sender As Object, e As PaintEventArgs) Handles MyBase.Paint
        If nums Is Nothing OrElse nums.Length = 0 Then Return

        Dim g As Graphics = e.Graphics
        g.Clear(Color.DimGray) ' 深色背景衬托白色柱子

        For i = 0 To nums.Length - 1
            ' 按比例计算柱子高度:数值100对应MaxBarHeight
            Dim barHeight As Integer = CInt(nums(i) / 100.0 * MaxBarHeight)
            ' 计算柱子位置:X轴留边距+间距,Y轴从底部向上计算
            Dim xPos As Integer = Margin + (BarWidth + 6) * i
            Dim yPos As Integer = Me.ClientSize.Height - Margin - barHeight
            
            ' 绘制白色柱子
            g.FillRectangle(Brushes.White, xPos, yPos, BarWidth, barHeight)
            ' 可选:在柱子上方标注对应数值
            g.DrawString(nums(i).ToString(), Me.Font, Brushes.Black, xPos, yPos - 22)
        Next
    End Sub
End Class

关键逻辑说明

  • 数组生成:ReDim nums(19)创建20元素数组,rnd.Next(0,100)生成指定范围的随机数。
  • 数组显示:String.Join方法快速拼接数组元素,避免手动遍历的冗余代码。
  • 柱状图绘制:
    • 通过数值比例转换,确保不同大小的随机数对应成比例的柱子高度。
    • 计算柱子位置时加入间距和边距,避免图表拥挤或贴边。
    • 调用Invalidate()触发重绘,生成新数组后自动更新图表。

内容的提问来源于stack exchange,提问作者ganjaman1213

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 06:05:33