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
..
我有一个简单的问题,我一直在努力解决理论上应该非常简单的问题。
我想在 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
..