我无法更改图片框 c# 中的图像
本文关键字:图像 | 更新日期: 2023-09-27 18:30:44
我已经在控制台应用程序中制作了一个yatzy游戏,我目前正在尝试在表单应用程序中制作一个。
这是我到目前为止所拥有的:
namespace Yatzy
{
public partial class Form1 : Form
{
public static Random kast = new Random();
public static int kast1 = kast.Next(1, 7);
public static int kast2 = kast.Next(1, 7);
public static int kast3 = kast.Next(1, 7);
public static int kast4 = kast.Next(1, 7);
public static int kast5 = kast.Next(1, 7);
public static int kast6 = kast.Next(1, 7);
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void pictureBox1_Click(object sender, EventArgs e)
{
if (kast1 == 1)
{
this.pictureBox_terning1.Image = new Bitmap(@"'Pics'terning1.png");
}
else if (kast1 == 2)
{
this.pictureBox_terning1.Image = new Bitmap(@"'Pics'terning2.png");
}
else if (kast1 == 3)
{
this.pictureBox_terning1.Image = new Bitmap(@"'Pics'terning3.png");
}
else if (kast1 == 4)
{
this.pictureBox_terning1.Image = new Bitmap(@"'Pics'terning4.png");
}
else if (kast1 == 5)
{
this.pictureBox_terning1.Image = new Bitmap(@"'Pics'terning5.png");
}
else if (kast1 == 6)
{
this.pictureBox_terning1.Image = new Bitmap(@"'Pics'terning6.png");
}
else
{
this.pictureBox_terning1.Image = new Bitmap(@"'Pics'terning0.png");
}
}
}
}
如您所见,我在表单中定义了"kast1"等,根据结果,它应该在图片框中显示不同的图像。我查看了我能找到的每个帖子,所有的解决方案都是大惊小怪的。
我试过没有"这个",我试过"=图像。FromFile("Pics''terning#.png");"
什么都没用。
没有必要仅仅使用 Bitmap 对象来加载 PictureBox 中的图像。也许更简洁的加载图像方法是使用 Load Method of PictureBox
。
如果我假设图像与您的应用程序位于同一目录中,包含在另一个文件夹中,这将轻松完成工作;
this.pictureBox_terning1.Load(@"'Pics'terning1.png");
Load
方法需要一个指向图像作为参数的有效路径,因此无需在加载每个图像后调用Refresh
。路径是绝对的还是相对的并不重要,但重要的是路径应该指向图像。但我建议您像这样创建可执行文件的绝对路径;
string apppath=Application.StartupPath;
string imagepath=@"'Pics'terning1.png";
this.pictureBox_terning1.Load(apppath+imagepath);
正如您提到的,即使没有遇到错误,也不会加载图像,在这种情况下,调试将是查找程序无序运行的理想技术。
更改图片源后,可能需要在图片框控件上调用 Refresh()。
加载的图像很可能不在您正在查看的路径上。
image.FromFile("Pics'terning#.png");
期望您的图像驻留在 {youprojectfolder}''bin''DebugORRelease''Pics 中。
new Bitmap(@"'Pics'terning1.png");
期望您的图像驻留在 {最有可能的 c:}''Pics 中。
所以我建议先检查一下,如果这不起作用,请添加断点 (F9) 并开始调试 (F5),请参阅 MSDN 以获取调试简介
我还建议您替换您的 if,否则如果构造与开关。
试试这段代码,我已经尝试过并有效(它将获取应用程序的 bin 目录,然后您可以用图像目录替换文件夹):
private void pictureBox1_Click(object sender, EventArgs e)
{
string path = AppDomain.CurrentDomain.BaseDirectory;
string path1 = path.Replace(@"'bin'Debug'", @"'Pics'");
if (kast1 == 1)
{
this.pictureBox_terning1.Image = new Bitmap(path1 + "terning1.png");
}
//rest of the code
}
如果您不喜欢替换,请将图片设置为复制到 bin 目录
右键单击图像 ->属性 ->复制到输出目录 ->复制 总是
.