1

我创建了一个将所有控件绘制到面板的方法,但它根据我列出的顺序绘制它们,这意味着 PictureBox1 将始终位于所有其他图片框的后面。例子:

e.Graphics.DrawImage(PictureBox1.BackgroundImage,
    new Rectangle(PictureBox1.Location, PictureBox1.Size));

e.Graphics.DrawImage(PictureBox2.BackgroundImage,
    new Rectangle(PictureBox2.Location, PictureBox2.Size));

它首先绘制 PictureBox1 ,然后是 PictureBox2 ,然后是PictureBox3,以此类推...

这意味着 PictureBox2 被绘制在 PictureBox1 上,而 PictureBox3 被绘制在 PictureBox2 上。这是显示重叠图像的图片:

现在,当我在焦点位于 picturebox2 上时按下按钮时,我希望更改 DrawImage 顺序,以便最后绘制 PictureBox2。我相信你们中的一个人对此有很好的解决方案,我想听听您的任何建议。

4

2 回答 2

1

在您的问题中,您没有明确说明是什么决定了面板中所有其他图片框的顺序。但是,您可以使用SetChildIndex实现相同的效果。例如,要将 PictureBox1 的位置与 PictureBox2 交换,您可以执行以下操作:

var p1ndex = panel.Controls.IndexOf(pBox1);
var p2ndex = panel.Controls.IndexOf(pBox2);
panel.Controls.SetChildIndex(pBox1, p1ndex);
panel.Controls.SetChildIndex(pBox2, p2ndex);

在这里,pBox1可能是您悬停的最后一个 PictureBox 和pBox2当前悬停的...

于 2012-07-05T18:56:10.730 回答
0

假设这是 WinForms,您可以调用

picturebox2.BringToFront()

在重绘它之前。

如果您需要更好的控制,而不仅仅是“让我在所有其他控件之上”,您可以使用GetChildIndexSetChildIndex

于 2012-07-05T18:30:38.407 回答