【发布时间】:2021-05-28 14:32:52
【问题描述】:
我想画一个六边形数组。
如果我将十六进制数设置为 7 以上,则不会绘制第 8 个十六进制等。
出了什么问题?
Option Strict On
Public Class Form1
' Dim pic As New List(Of PictureBox)
Dim bm As New Bitmap(640, 480)
Dim bmg As Graphics = Graphics.FromImage(bm)
Dim p As Pen = New Pen(Color.Black)
Dim sb As SolidBrush = New SolidBrush(Color.Black)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
p.Width = 5.0F
Dim i As Integer = 0
Dim NumOfRaws As Integer = 8
Dim hexRib As Integer = 40
Dim LongSide As Integer = CInt(System.Math.Cos(30 * System.Math.PI / 180) * hexRib)
Dim hexGap As Integer = 10
For i = 0 To NumOfRaws - 1
DrawHex(hexRib, CInt(hexGap * i + 100 + LongSide * (i * 2)), 100)
Next
End Sub
Public Sub DrawHex(ByVal side As Integer, ByVal x As Integer, ByVal y As Integer)
Dim ShortSide As Integer = CInt(System.Math.Sin(30 * System.Math.PI / 180) * side)
Dim LongSide As Integer = CInt(System.Math.Cos(30 * System.Math.PI / 180) * side)
Dim Points(5) As Point
Points(0) = New Point(x, y)
Points(1) = New Point(x + LongSide, y + ShortSide)
Points(2) = New Point(x + LongSide, y + ShortSide + side)
Points(3) = New Point(x, y + ShortSide * 2 + side)
Points(4) = New Point(x - LongSide, y + ShortSide + side)
Points(5) = New Point(x - LongSide, y + ShortSide)
p.Width = 5.0F
bmg.DrawPolygon(p, Points)
End Sub
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
e.Graphics.DrawImage(bm, New Point(0, 0))
End Sub
End Class
【问题讨论】:
-
尝试
bmg.DrawRectangle(Pens.Black, New Rectangle(Point.Empty, New Size(bm.Width - 1, bm.Height - 1)))来查看您的问题。