0

C# フォームでは、一度呼び出されると、目的の画像、サイズ、場所でピクチャ ボックスを作成する関数を作成しました。

private void NewPic(string nName, int locX, int locY, int SizX, int SizY, Image Img)
{
    PictureBox Pic = new PictureBox();
    Pic.Name = nName; Pic.Image = Img;
    Pic.BackColor = Color.Transparent;
    Pic.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
    Pic.Size = new System.Drawing.Size(SizX, SizY);
    Pic.Location = new System.Drawing.Point(locX, locY);
    Controls.Add(Pic);
    Pic.Click += new EventHandler(Pic_Click);
}

写真が必要なときは、次のようにします。

NewPic("FIRE", 32, 100, 120, 120, Properties.Resources.Image);

問題は、クリックイベントで、ピクチャボックスをクリックすると背景画像を変更したいのですが、他のピクチャボックスをクリックすると、最後のピクチャボックスでそれをリセットすることです:

private void Pic_Click(object sender, System.EventArgs e)
{
    PictureBox pb = (PictureBox)sender;
    switch (pb.Name)
    {
        case "1": 
            pb.BackgroundImage = Properties.Resources.OtherImg; //creates the background
            pb.BackgroundImageLayout = ImageLayout.Stretch;
                //INSERT CODE HERE: to remove from other if it has
            break;
        case "2":
            pb.BackgroundImage = Properties.Resources.OtherImg; //creates the background
            pb.BackgroundImageLayout = ImageLayout.Stretch;
                //INSERT CODE HERE: to remove from other if it has
            break;
        }
     }

2 つだけでなく、複数のピクチャボックス/オブジェクトに適用できるコードが必要です

4

3 に答える 3

1

最後の絵箱の画像も保存する必要があると思います

PictureBox _lastPictureBox = null;
Image _lastPictureBoxImage = null;

private void Pic_Click(object sender, System.EventArgs e)
{
    PictureBox pb = (PictureBox)sender;
    if (_lastPictureBox != null) 
    {
      // update the previous one, eg:
       _lastPictureBox.BackgroundImage = _lastPictureBoxImage;
    }

    // now set it to the current one:
   _lastPictureBox = pb;
   _lastPictureBoxImage = pb.Image;
   switch (pb.Name)
   {
     case "1": 
       pb.BackgroundImage = Properties.Resources.OtherImg; //creates the background
       pb.BackgroundImageLayout = ImageLayout.Stretch;
    break;
    case "2":
      pb.BackgroundImage = Properties.Resources.OtherImg; //creates the background
      pb.BackgroundImageLayout = ImageLayout.Stretch;
    break;
  }

}

于 2012-05-06T09:15:40.383 に答える
0

私があなたを正しく理解していれば、グローバル変数が必要です

PictureBox lastbox;

次に、このコードを挿入できます。

lastbox.Image = Properties.Resources.Image;
lasbox = pb;
于 2012-05-06T09:09:41.573 に答える