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

VB 2019中如何声明常量点数组以绘制多边形?

在VB 2019中声明硬编码点数组用于绘制多边形

当然可以!在VB 2019里,你完全可以用简洁的语法硬编码点数组来绘制多边形,甚至能实现近似“常量”的不可修改数组效果,完全贴合你的需求。

1. 最直接的简洁写法(匹配你的期望)

你想要的写法只需要稍微调整——给每个坐标对加上New Point()构造器,就能直接使用:

' 初始化点数组,语法紧凑易读
Dim myPoints As Point() = {
    New Point(10, 10), 
    New Point(12, 12), 
    New Point(13, 13), 
    New Point(14, 14), 
    New Point(15, 15)
}

' 直接传入DrawPolygon方法
myGraphics.DrawPolygon(myPen, myPoints)

这种写法已经是硬编码点坐标的极简方式,代码清晰且符合VB语法规范。

2. 实现“常量”数组(不可修改)

如果希望这个点数组是不可修改的常量,要注意VB里不能直接用Const声明结构体数组(Const仅支持基本值类型和字符串),但可以用ReadOnly字段来模拟常量效果,确保数组引用不会被替换,适合作为类级别的固定点集:

' 类级别声明只读数组,类似常量,仅能在初始化时赋值
Private ReadOnly myFixedPoints As Point() = {
    New Point(10, 10), 
    New Point(12, 12), 
    New Point(13, 13), 
    New Point(14, 14), 
    New Point(15, 15)
}

' 在绘图方法中直接使用
Private Sub DrawMyPolygon(ByVal g As Graphics)
    Using pen As New Pen(Color.Red, 2)
        g.DrawPolygon(pen, myFixedPoints)
    End Using
End Sub

如果需要完全防止修改数组内的单个点坐标,可以自定义不可变的点结构体,但对于大多数绘图场景,ReadOnly数组已经足够满足“常量”的需求。

3. 更紧凑的语法(可选)

如果你追求极致简洁,还可以利用VB的ValueTuple和LINQ快速转换(需要导入System.Linq):

' 用ValueTuple简化坐标书写,再转换为Point数组
Dim myPoints As Point() = {(10,10), (12,12), (13,13), (14,14), (15,15)} _
    .Select(Function(t) New Point(t.Item1, t.Item2)) _
    .ToArray()

不过这种写法依赖LINQ,可读性略低于直接使用New Point(),建议根据实际场景选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 16:42:50