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を描画し、次にPictureBox33番目を描画します。

これは、PictureBox2がPictureBox1の上に描画され、PictureBox3がPictureBox2の上に描画されることを意味します。重複する画像を表示するための写真は次のとおりです。

ここで、picturebox2にフォーカスがあるときにボタンを押すと、PictureBox2が最後に描画されるようにDrawImageの順序を変更したいと思います。あなたの一人がこれに対する素晴らしい解決策を持っていると確信しています、私はあなたが持っているかもしれないどんな提案にも耳を傾けたいと思います。

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、現在ホバーしているPictureBoxである可能性があります...

于 2012-07-05T18:56:10.730 に答える
0

これがWinFormsであると仮定すると、次のように呼び出すことができます。

picturebox2.BringToFront()

再描画する前に。

「他のすべてのコントロールの上に私を置く」よりも細かいコントロールが必要な場合は、GetChildIndexSetChildIndexを使用できます。

于 2012-07-05T18:30:38.407 に答える