Visual Studio 2012动态PictureBox图像

时间:2015-01-31 20:31:46

标签: c# visual-studio visual-studio-2012 picturebox

我有一个简单的问题,我一直在努力应该从理论上讲很简单。

我想在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;
}

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

那么......现在怎么样?谢谢你的回答。

2 个答案:

答案 0 :(得分:1)

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

另外,正如TaW指出的那样,当b == 1时,你设置b = 2并检查b == 2.两个if子句都是真的。第二个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)更改条件以使用静态副本而不是资源属性(每次都返回一个新对象)。

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

答案 1 :(得分:1)

以下是我的任务解决方案:在MyProject我有一个名为Resource1的资源文件和六个来自Images_0的{​​{1}}:< / p>

_5

我使用简单的int index = 0; private void anImageButton_Click(object sender, EventArgs e) { index = (index + 1) % 6; anImageButton.Image = (Bitmap)MyProject.Resource1.ResourceManager.GetObject("_" + index); } 代替PictureBox,但它也适用于您的Button anImageButton ..