繁体   English   中英

使用按钮更改image.source?

[英]Change image.source with button?

我仍在学习基础知识,并且正在制作“随机角色生成器”,以为“世界上最沉闷的英雄”创建基本统计信息。

我已经安装了一个Image框(名为charbox),该框在生成字符时应该显示三个.jpg文件之一。

我已将所有3个jpg添加到解决方案中(它们都列在解决方案资源管理器的images文件夹中),但我无法找到要显示的按钮。

我正在使用一个开关(它的语法很可能完全错误),该开关应该使用一个随机整数,我将其声明为“ 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。 但这始终是guy1.jpg,如果我单击第二次生​​成,它将引发关于位图初始化的错误,仅发生一次。

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

        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。 但这始终是guy1.jpg

可能因为img始终等于1 ...逐步调试代码以了解原因。

如果我单击第二次生​​成,则会引发有关位图初始化的错误,该错误仅发生一次。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM