改变形象.源代码与按钮

本文关键字:按钮 源代码 变形 改变 | 更新日期: 2023-09-27 18:15:59

我还在学习基础知识,我正在制作一个"随机角色生成器",为"世界上最无聊的英雄"创造基本属性。

我已经包含了一个图像框(名为charbox),在字符生成时,应该显示三个.jpg文件中的一个。

我已经将所有3个jpg图片添加到我的解决方案中(它们都在解决方案资源管理器的图像文件夹中列出),但我无法获得按钮来选择一个显示

我正在使用一个开关(很可能有一个完全错误的语法),它应该使用一个随机整数,我已经声明为"img",范围为(0,3)。

下面的代码,我从另一个网站,但它不工作在我的程序:

switch (img)
        {
            case 1:
                charbox.Source = new BitmapImage(new Uri(@"C:'Users'Otis'documents'visual studio 2010'Projects'WpfApplication2'WpfApplication2'Images'guy1.jpg", UriKind.Relative));
                break;
            case 2:
                charbox.Source = new BitmapImage(new Uri(@"C:'Users'Otis'documents'visual studio 2010'Projects'WpfApplication2'WpfApplication2'Images'guy2.jpg", UriKind.Relative));
                break;
            default:
                charbox.Source = new BitmapImage(new Uri(@"C:'Users'Otis'documents'visual studio 2010'Projects'WpfApplication2'WpfApplication2'Images'guy3.jpg", UriKind.Relative));
                break;
        }

你知道我该怎么做吗?

编辑——

我已经做了一些查看,并将我的图像选择代码更改为:

#region Image Selection
        bmguy.BeginInit();

        switch (img)
        {
            case 0:
                bmguy.UriSource = new Uri(@"C:'Users'Otis'Pictures'guy1.jpg");
                break;
            case 1:
                bmguy.UriSource = new Uri(@"C:'Users'Otis'Pictures'guy2.jpg");
                break;
            case 2:
                bmguy.UriSource = new Uri(@"C:'Users'Otis'Pictures'guy3.jpg");
                break;
        }
        bmguy.EndInit();
        charbox.Source = bmguy;
        #endregion

其中bmguy是声明为全局变量的位图,而switch (img)仍然使用1-3个随机数。

那么,现在当我点击生成图像加载guy1。jpg。但它总是guy .jpg,如果我第二次点击generate,它就会抛出位图初始化的错误,只会出现一次。

我应该使用三个单独的位图图像,还是我可以使用一个并更改文件路径,因为我在交换机中尝试?

改变形象.源代码与按钮

        Random r = new Random();
        int rand = r.Next(0, 3);
        switch (rand)
        {
            case 0:
                charbox.Load("image1");
                break;
            case 1:
                charbox.Load("image2");
                break;
            case 2:
                charbox.Load("image3");
                break;
        }

您每次都试图重新初始化位图。

那么,现在当我点击生成图像加载guy1。jpg。但总是guy。jpg

可能是因为img总是等于1…一步一步调试你的代码来理解为什么。

,如果我点击生成第二次,它抛出一个错误关于位图初始化只发生一次。

您需要创建一个新的BitmapImage实例,您不能重用相同的实例。更好的方法是加载3个BitmapImages,并根据img

的值使用其中一个