VB.NET 在矩形顶部绘制 e.Graphics

VB.NET Draw on top of rectangle e.Graphics

我想使用 e.Graphics 在我的表单上绘图。所以我已经绘制了一组矩形(用于我正在制作的游戏的国际象棋棋子),现在我想在已经绘制(和工作)的矩形之上绘制棋子。棋子是透明的 png,保存在我的 Resources 文件夹中。我正常绘制它们没有问题,但每当我想将它们绘制在图块上时,只有图块是可见的 - 无论哪一行代码先行。如何在瓷砖顶部添加碎片,让瓷砖在下面?

这是有问题的代码:

If Not alreadydrawn Then
    Dim g As Graphics = Graphics.FromImage(screenbuffer)
    Checked = False
    For y = 1 To 8
        For x = 1 To 8
            If Checked Then g.FillRectangle(Brushes.LightGray, (x * 85) - 40, (y * 85) - 40, 85, 85)
            If Not Checked Then g.FillRectangle(Brushes.Black, (x * 85) - 40, (y * 85) - 40, 85, 85)
            Checked = Not Checked
        Next
        Checked = Not Checked
    Next
    e.Graphics.DrawImage(My.Resources.Bishop_White, New Rectangle(New Point(50, 50), New Size(64, 64)))
    alreadydrawn = True
End If
e.Graphics.DrawImageUnscaledAndClipped(screenbuffer, New Rectangle(New Point(0, 0), New Size(795, 805)))

这是我做的解决方案:

checked = False
For y = 1 To 8
    For x = 1 To 8
        If clickedsquare(0) = x - 1 And clickedsquare(1) = y - 1 And Not boardlayout(y - 1, x - 1) = 0 And clickmode = "options" Then
            t.FillRectangle(New SolidBrush(Color.FromArgb(225, 212, 128)), x * 75, y * 75, 75, 75)
        Else
            If checked Then t.FillRectangle(New SolidBrush(Color.FromArgb(64, 64, 64)), x * 75, y * 75, 75, 75)
            If Not checked Then t.FillRectangle(New SolidBrush(Color.FromArgb(224, 224, 224)), x * 75, y * 75, 75, 75)
        End If
        checked = Not checked
    Next
    checked = Not checked
Next

...

然后:

tiles.Image = tilebuffer
pieces.Image = piecebuffer
BackgroundImage = tiles.Image
pieces.BackColor = Color.Transparent
alreadydrawn = True