Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

как правильно сделать пользовательские кнопки

9.3K
04 июля 2007 года
ALLCALL
19 / / 07.11.2005
Необходимо сделать простой интерфейс в котором должно быть несколько кнопок.
В этом интерфейсе каждая кнопка имеет 4 состояния на каждое из которых должны быть своя картинка.
Состояния
1. обычное состояние
2. обычное состояние + мышка над кнопкой
3. кнопка нажата
4. кнопка нажата + мышка над кнопкой

я хочу нарисовать 4 картинки к каждой кнопке. кнопок будет много.


как _правильно_ реализовать это средствами c# ?
какие события использовать?
как _лучше_ загружать картинки в c#?
и какой должен быть формат картинок?
как их менять при событии от кнопки?

хотелось бы чтобы готовая программа вместе с картинками находилась в одном .exe файле


спасибо
23K
17 июля 2007 года
Ламерко
34 / / 03.07.2007
Можно примерно так

Код:
internal class MyButton:System.Windows.Forms.Button
    {
        // Картинка когда кнопка не нажата и мышь сверху
        Image m_MouseOverUnClickedImg = Image.FromFile("img1.jpg");
        // Картинка когда кнопка нажата и мышь сверху
        Image m_MouseOverClickedImg = Image.FromFile("img2.jpg");
        // Картинка когда кнопка нажата и мыши сверху нема
        Image m_MouseClickImg = Image.FromFile("img3.jpg");
        // Картинка когда кнопка не нажата и мыши сверху нема
        Image m_MouseUnClickImg = Image.FromFile("img4.jpg");
        bool isDown = false;
        public MyButton()
            : base()
        {
            /* Событие когда мыш сверху :) */
            this.MouseHover += new EventHandler(MyButton_MouseHover);
            /* Событие когда кнопка мыши нажата :) */
            this.MouseDown += new System.Windows.Forms.MouseEventHandler(MyButton_MouseDown);
            /* Событие когда мыша покидает область объекта */
            this.MouseLeave += new EventHandler(MyButton_MouseLeave);
        }

        void MyButton_MouseLeave(object sender, EventArgs e)
        {
            /* Проверяем состояние кнопки */
            if (!isDown)
            {
                /* ставим картинку не нажатой кнопки */
               this.Image = m_MouseClickImg;
            }
            else
            {
                /* ставим картинку нажатой кнопки */
               this.Image = m_MouseUnClickImg;
            }
        }

        void MyButton_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            // Фильтр на левую кнопку
            if (e.Button == System.Windows.Forms.MouseButtons.Left)
            {
                if (!isDown)
                {
                    // если кнопка не нажата. Ставим флаг что она нажималась и выставляем картинку
                    isDown = true;
                    this.Image = m_MouseClickImg;
                }
                else
                {
                    // если кнопка нажата. Ставим флаг что она не нажималась и выставляем картинку
                    isDown = false;
                    this.Image = m_MouseUnClickImg;                    
                }
            }
        }

        void MyButton_MouseHover(object sender, EventArgs e)
        {
            // Если кнопка не была нажата
            if (!isDown)
            {
                // Если кнопка не была нажата
                // выставляем картинку которая отображает наведение мыши при не нажатой кнопке
                this.Image = m_MouseOverUnClickedImg;
            }
            else
            {
                // Если кнопка была нажата
                // выставляем картинку которая отображает наведение мыши при нажатой кнопке
                this.Image = m_MouseOverClickedImg;
            }
        }
    }


А с форматами картинок.
Я использую PNG
Но можеш глянуть сам какие форматы потдерживаются.

Ну а загружать можеш или из ресурса или же из папки, если из папки тогда удобнее бедит менять картинки
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог