C# 是否要在不断更新的面板上绘制?

C# 是否要在不断更新的面板上绘制?,c#,winforms,C#,Winforms,所以我有一个相当简单的Winforms应用程序。它有一个带有bmp图像的面板,通过 Graphics.DrawImage 我希望能够在更新的图像上画一个矩形。然而,在Winforms中似乎没有办法做到这一点 首先,我尝试在第一个面板上绘图,但似乎无法设置图形元素的z索引,因此每次更新图像时,矩形都会被删除 第二,我试着制作第二个面板并在其中绘图。然而,似乎没有办法在Winforms中创建一个真正透明的面板。我四处寻找了一些解决方法,但看起来它们所做的只是将第二个面板作为第一个面板的一部分,所以

所以我有一个相当简单的Winforms应用程序。它有一个带有bmp图像的面板,通过

Graphics.DrawImage
我希望能够在更新的图像上画一个矩形。然而,在Winforms中似乎没有办法做到这一点

首先,我尝试在第一个面板上绘图,但似乎无法设置图形元素的z索引,因此每次更新图像时,矩形都会被删除

第二,我试着制作第二个面板并在其中绘图。然而,似乎没有办法在Winforms中创建一个真正透明的面板。我四处寻找了一些解决方法,但看起来它们所做的只是将第二个面板作为第一个面板的一部分,所以之前删除矩形的问题再次出现


我想做的事有没有别的办法?不切换到WPF?

它应该与油漆一致吗?重画控件时调用绘制事件。我希望通过用户的命令调用它。只需将DrawRectangle调用放在DrawImage调用之后。设置图形元素的z索引只有一个,使用它的位置是在Paint事件中。因此,只需将DrawRectangle代码放在DrawImage代码之后,就可以了。若要启动第一次调用以绘制,请调用panel1.Invalidate;为了让它活下来,你可能必须把坐标存储在某个地方!然后,使用一个。