Visual Studio 2012 动态图片框图片

Visual Studio 2012 Dynamic PictureBox Image

我有一个简单的问题,我一直在努力解决理论上应该非常简单的问题。

我想在 Visual Studio 2012 中用图片框创建一个动态按钮,每次单击它时都会更改图像。

if (pictureBox4.BackgroundImage == MyProject.Properties.Resources._1)
    pictureBox4.BackgroundImage = MyProject.Properties.Resources._2;
else if (pictureBox4.BackgroundImage == MyProject.Properties.Resources._2)
    pictureBox4.BackgroundImage = MyProject.Properties.Resources._1;

现在,这并没有真正奏效。它不会检测当前显示的图像并输入 if 语句。因此,相反,我以这种方式对其进行了测试。

int b = 1; 

if (b == 1)
{
    pictureBox4.BackgroundImage = MyProject.Properties.Resources._2;
    b = 2;
}

if (b == 2)
{
    pictureBox4.BackgroundImage = MyProject.Properties.Resources._1;
    b = 1;
}

关闭...但没有雪茄。当我点击它时,图像确实改变了,但只有一次;如果我再次点击它,它保持不变...

那么……现在怎么办?感谢您的回答。

您在两个 if 子句 (Resources._2) 中使用了相同的图像?

此外,正如 TaW 指出的那样,当 b == 1 时,您设置 b = 2 并检查 b == 2 是否成立。两个 if 子句都为真。第二个 if 应该是 "else if"

    if (b == 1)
    {
        pictureBox4.BackgroundImage = MyProject.Properties.Resources._2;
        b = 2;
    }
    else if (b == 2)
    {   
        pictureBox4.BackgroundImage = MyProject.Properties.Resources._1;
        b = 1;
    }

当然你可以只使用 else 子句:

    if (b == 1)
    {
        pictureBox4.BackgroundImage = MyProject.Properties.Resources._2;
        b = 2;
    }
    else
    {   
        pictureBox4.BackgroundImage = MyProject.Properties.Resources._1;
        b = 1;
    }

或者,如果您不想要整数变量,那么您可以试试这个:

1) 从资源中拉取图片一次,然后将它们放在静态成员中。

    private static readonly Image Image1 = MyProject.Properties.Resources._1;
    private static readonly Image Image2 = MyProject.Properties.Resources._2;

2) 更改条件以使用静态副本而不是资源属性(每次 return 一个新对象)。

    if (pictureBox4.BackgroundImage == Image2)
    {
        pictureBox4.BackgroundImage = Image1;
    }
    else
    {
        pictureBox4.BackgroundImage = Image2;
    }

这是我的任务解决方案:在 MyProject 中,我有一个名为 Resource1 的资源文件和六个 Images_0_5 :

int index = 0;
private void anImageButton_Click(object sender, EventArgs e)
{
    index = (index + 1) % 6;
    anImageButton.Image = 
          (Bitmap)MyProject.Resource1.ResourceManager.GetObject("_" + index);
}

我使用简单的 Button anImageButton 而不是 PictureBox,但它也适用于您的 PictureBox..