Изменить изображение. Источник с помощью кнопки? - PullRequest
0 голосов
/ 28 ноября 2011

Я все еще изучаю основы и создаю «Генератор случайных персонажей», который создает базовую статистику для «самого скучного героя мира».

Я включил графическое окно (названное charbox)который при генерации символов должен отображать один из трех файлов .jpg.

Я добавил все 3 jpgs в свое решение (все они перечислены в папке изображений в обозревателе решений), но я могуполучить кнопку, чтобы выбрать один для отображения.

Я использую переключатель (который может иметь совершенно неправильный синтаксис), который должен использовать случайное целое число, которое я объявил как "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;
        }

Любая идея, как я могу сделатьэта работа?

-Edit-

Я немного посмотрел и изменил свой код выбора изображения на:

#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 - битовый образ, объявленный как глобальныйпеременная и переключатель (img) по-прежнему использует случайное число 1-3.

Итак, nтеперь, когда я нажимаю создать изображение загружает guy1.jpg.Но это всегда guy1.jpg, и если я нажимаю кнопку «Генерировать второй раз», возникает ошибка об инициализации растрового изображения, которая происходит только один раз.

Должен ли я использовать три отдельных растровых изображения или я могу использовать одно и изменить путь к файлукак я пытался в моем переключателе?

Ответы [ 2 ]

1 голос
/ 28 ноября 2011
        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;
        }

Вы пытаетесь повторно инициализировать растровое изображение каждый раз. Просто назначьте его картинной коробке в первый раз.

0 голосов
/ 28 ноября 2011

Итак, теперь, когда я нажимаю генерировать изображение, загружает guy1.jpg. Но это всегда guy1.jpg

Возможно, потому что img всегда равен 1 ... пошагово отлаживайте свой код, чтобы понять, почему.

и если я нажму кнопку «Генерировать второй раз», появится сообщение об ошибке инициализации растрового изображения, которое происходит только один раз.

Вам нужно создать новый экземпляр BitmapImage, вы не можете повторно использовать тот же самый. Лучшим подходом было бы загрузить 3 BitmapImages и использовать один из них в зависимости от значения img

...