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
相关产品推荐
相关产品推荐

