我创建了一个方法,它将所有控件都绘制到面板上,但是它根据我列出的顺序绘制它们,这意味着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。 我相信你们其中一个人有很好的解决方案,我想听听你们的任何建议。
答案 0 :(得分: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
是您当前悬停在当前的那个...
答案 1 :(得分:0)
假设这是WinForms,您可以调用
picturebox2.BringToFront()
在重新绘制之前。
如果您需要更好的控制而不仅仅是“让我掌控所有其他控件”,您可以使用GetChildIndex和SetChildIndex。