我不能改变图片框中的图像c#

时间:2013-09-10 11:29:48

标签: c# picturebox

我在控制台应用程序中做了一个愚蠢的游戏,我目前正在尝试在表单应用程序中制作一个游戏。
这就是我到目前为止所做的:

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”等,并且根据结果,它应该在图片框中显示不同的图像。我查看了我能找到的每一篇文章,所有的解决方案都大惊小怪。

我试过没有“这个”。我试过“= image.FromFile(”Pics \ terning#.png“);”
什么都行不通。

4 个答案:

答案 0 :(得分:1)

更改图片源后,您可能需要在图片框控件上调用Refresh()。

答案 1 :(得分:1)

没有必要仅使用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); 

正如您所提到的,即使没有遇到任何错误,也不会加载图像,对于这种情况,调试将是查找程序无序运行位置的理想技术。

答案 2 :(得分:0)

您要加载的图片很可能不在您正在查看的路径上。

 image.FromFile("Pics\terning#.png");

预计您的图片位于{youprojectfolder} \ bin \ DebugORRelease \ Pics。

new Bitmap(@"\Pics\terning1.png");

预计您的图片位于{很可能是c:} \ Pics。

所以我建议先检查一下,如果这不起作用,请添加断点(F9)并开始调试(F5)see MSDN for an introduction in debugging

我还建议您使用switch替换if,else if构造。

答案 3 :(得分:0)

尝试使用此代码,我已经尝试过并运行(它将获取您应用的bin目录,然后您可以使用image目录替换文件夹):

  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目录
  

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