实现要点说明:
- 使用固定宽度字体保证字符对齐
- 通过空格和星号的组合构建图形轮廓
- 数学公式控制图形形状:
平行四边形:每行偏移量递减
菱形:分上下半区分别处理星号数量
等腰三角形:星号数量呈奇数增长
- 坐标计算采用20像素行距确保可读性
- 所有图形使用相同绘图上下文保证一致性
Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint
Dim g As Graphics = e.Graphics
Dim font As New Font("Courier New", 12)
Dim brush As New SolidBrush(Color.Black)
' 平行四边形(5行9列)
For i As Integer = 0 To 4
Dim line As String = New String(" "c, 4 - i) & New String("*"c, 9)
g.DrawString(line, font, brush, 20, 20 + i * 20)
Next
' 菱形(5行)
Dim space As Integer = 4
Dim star As Integer = 1
For i As Integer = 0 To 4
Dim line As String = New String(" "c, space) & New String("*"c, star)
g.DrawString(line, font, brush, 150, 20 + i * 20)
If i < 2 Then
space -= 1
star += 2
Else
space += 1
star -= 2
End If
Next
' 等腰三角形(5行)
For i As Integer = 0 To 4
Dim line As String = New String(" "c, 4 - i) & New String("*"c, 2 * i + 1)
g.DrawString(line, font, brush, 280, 20 + i * 20)
Next
End Sub
