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;
}
}
}
как правильно сделать пользовательские кнопки
В этом интерфейсе каждая кнопка имеет 4 состояния на каждое из которых должны быть своя картинка.
Состояния
1. обычное состояние
2. обычное состояние + мышка над кнопкой
3. кнопка нажата
4. кнопка нажата + мышка над кнопкой
я хочу нарисовать 4 картинки к каждой кнопке. кнопок будет много.
как _правильно_ реализовать это средствами c# ?
какие события использовать?
как _лучше_ загружать картинки в c#?
и какой должен быть формат картинок?
как их менять при событии от кнопки?
хотелось бы чтобы готовая программа вместе с картинками находилась в одном .exe файле
спасибо
Код:
А с форматами картинок.
Я использую PNG
Но можеш глянуть сам какие форматы потдерживаются.
Ну а загружать можеш или из ресурса или же из папки, если из папки тогда удобнее бедит менять картинки