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

VB.NET如何在圆形上绘制均匀分布的矩形图案

实现圆形上均匀绘制矩形的VB.NET代码修改

以下是调整后的代码,实现以D1I.Text对应的半径为基准,每隔6度绘制一个固定小矩形,共60次:

Private Sub Panel2_Paint(sender As Object, e As PaintEventArgs) Handles Panel2.Paint
    Dim g As Graphics = e.Graphics
    g.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias ' 开启抗锯齿,让图形更平滑

    Dim centerX, centerY As Integer
    centerX = Panel2.Width \ 2
    centerY = Panel2.Height \ 2

    ' 辅助函数:安全将文本转为整数,避免格式错误
    Function GetRadius(text As String) As Integer
        Dim val As Integer
        If Integer.TryParse(text, val) Then
            Return val \ 2
        End If
        Return 0
    End Function

    ' 绘制四个基础圆形
    Dim radius As Integer
    radius = GetRadius(D1A.Text)
    g.DrawEllipse(Pens.Black, centerX - radius, centerY - radius, radius * 2, radius * 2)

    radius = GetRadius(D1I.Text)
    g.DrawEllipse(Pens.Black, centerX - radius, centerY - radius, radius * 2, radius * 2)

    ' 在D1I对应的圆上绘制60个小矩形
    Dim rectWidth As Integer = 5 ' 矩形宽度
    Dim rectHeight As Integer = 10 ' 矩形高度
    For angle As Integer = 0 To 354 Step 6 ' 每隔6度,共60次
        ' 将角度转为弧度
        Dim radian As Double = angle * Math.PI / 180
        ' 计算矩形中心的坐标
        Dim rectCenterX As Double = centerX + radius * Math.Cos(radian)
        Dim rectCenterY As Double = centerY + radius * Math.Sin(radian)
        ' 计算矩形左上角坐标(让矩形中心落在圆周上)
        Dim rectX As Integer = CInt(rectCenterX - rectWidth \ 2)
        Dim rectY As Integer = CInt(rectCenterY - rectHeight \ 2)
        ' 绘制矩形
        g.DrawRectangle(Pens.Red, rectX, rectY, rectWidth, rectHeight)
        ' 如果需要填充矩形,用下面的代码
        ' g.FillRectangle(Brushes.Red, rectX, rectY, rectWidth, rectHeight)
    Next

    radius = GetRadius(D2A.Text)
    g.DrawEllipse(Pens.Black, centerX - radius, centerY - radius, radius * 2, radius * 2)

    radius = GetRadius(D2I.Text)
    g.DrawEllipse(Pens.Black, centerX - radius, centerY - radius, radius * 2, radius * 2)
End Sub

关键说明:

  • 安全文本转整数:新增GetRadius函数,用Integer.TryParse避免输入非数字文本时程序崩溃。
  • 椭圆绘制修正:原代码DrawEllipse参数有误,最后两个参数是图形的宽和高,因此需要用radius*2才能保证圆形半径正确。
  • 圆周坐标计算:通过三角函数Cos和Sin计算每个角度对应的圆周位置,确保矩形中心精准落在圆上。
  • 视觉优化:开启抗锯齿模式,让线条和图形边缘更平滑。
  • 参数可调:rectWidth和rectHeight可根据需求修改,控制小矩形的尺寸。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 11:02:36