我在控制台应用程序中做了一个愚蠢的游戏,我目前正在尝试在表单应用程序中制作一个游戏。
这就是我到目前为止所做的:
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“);”
什么都行不通。
答案 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目录右键点击图片 - >属性 - >复制到输出目录 - >复制 总是