我无法更改图片框 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");"
什么都没用。

我无法更改图片框 c# 中的图像

没有必要仅仅使用 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 目录

右键单击图像 ->属性 ->复制到输出目录 ->复制 总是

.