Фоновые изображения кнопки цикла в C #

У меня есть форма в C #, в которой есть кнопка, при нажатии которой я хочу, чтобы фоновое изображение циклически проходило через набор изображений (которые я использую в качестве ресурсов для проекта). Изображения называются «_1», «_2» и т. Д., И каждый раз, когда я нажимаю кнопку, я хочу, чтобы фоновое изображение увеличивалось до следующего и возвращалось к «_1», когда оно достигает максимального значения. Есть ли способ сделать это?

Я попытался получить, button1.BackgroundImage.ToString()но это дает, System.Drawing.Bitmapа не Resources._1как я думал (в этом случае я мог бы просто получить последний символ и включить его, чтобы изменить фон на соответствующее новое изображение).

Спасибо за вашу помощь.

18.08.2008 18:41:19
3 ОТВЕТА
РЕШЕНИЕ

Почему бы вам просто не поместить изображения в массив?

3
18.08.2008 18:43:32

Вы можете создать подкласс Button и переопределить свойство BackgroundImage, чтобы лучше отслеживать текущий ресурс, представляющий изображение. Вы также можете переопределить метод onclick для внутренней обработки циклического перехода к следующему изображению, хотя это может быть немного странным, если ресурсы обрабатываются за пределами вашего производного класса кнопок.

0
18.08.2008 18:49:05
class YourClass
{
    private IEnumerator<Image> enumerator;

    YourClass(IEnumerable<Image> images)
    {
        enumerator = (from i in Enumerable.Range(0, int.Max)
                      from image in images
                      select image).GetEnumerator();
        enumerator.MoveNext();
    }

    public Image CurrentImage { get { return enumerator.Current; } }

    public void OnButtonClick() { enumerator.MoveNext(); }
}

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

Просто отметьте, что как только этот класс создан, вы не можете изменять данный список изображений снаружи. Если вы хотите делать такие вещи, вам нужно реализовать одноразовый шаблон и соответствующим образом утилизировать счетчик.

0
30.09.2012 09:32:51