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

VB.NET在矩形顶部绘制e.图形,vb.net,graphics,png,Vb.net,Graphics,Png,我想用e.Graphics绘制我的表格。因此,我为我正在制作的游戏绘制了一组矩形棋盘,现在我想在已经绘制和工作的矩形上绘制棋子。棋子是保存在“我的资源”文件夹中的透明png。我在正常情况下绘制它们没有问题,但是每当我想在平铺上绘制它们时,只有平铺是可见的——不管哪一行代码先开始。如何将碎片添加到瓷砖顶部,使瓷砖位于下方 这是有问题的代码: If Not alreadydrawn Then Dim g As Graphics = Graphics.FromImage(screenbuffe

我想用e.Graphics绘制我的表格。因此,我为我正在制作的游戏绘制了一组矩形棋盘,现在我想在已经绘制和工作的矩形上绘制棋子。棋子是保存在“我的资源”文件夹中的透明png。我在正常情况下绘制它们没有问题,但是每当我想在平铺上绘制它们时,只有平铺是可见的——不管哪一行代码先开始。如何将碎片添加到瓷砖顶部,使瓷砖位于下方

这是有问题的代码:

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

然后:


嗯,你为什么不创建一个空的板子资源,设置一个图片框并指向它,然后在上面的透明控件中在上面画出你的作品。@TonyHopkinson板子资源是什么意思?位图?是的。这样你就不必不断地重画了。当您的作品重画,络筒机将照顾板本身。除此之外,它不会改变,为什么要继续重新绘制它?这就是我用alreadydrawn=True所做的。我的问题是我不能同时看到这两个。当我尝试将一个添加到另一个上时会发生什么。也就是说,我添加的部分见白主教没有出现。这根本不是我的观点。在一个控件上绘制电路板,在其顶部的另一个透明控件上绘制各部分。
tiles.Image = tilebuffer
pieces.Image = piecebuffer
BackgroundImage = tiles.Image
pieces.BackColor = Color.Transparent
alreadydrawn = True