Welcome to my World Вторник, 26.11.2024, 06:54
Любое использование материалов, их подборки, дизайна и элементов дизайна может осуществляться лишь с разрешения автора (правообладателя) и только при наличии ссылки на ресурс
Приветствую Вас Гость | RSS


Меню сайта

Категории раздела
Работа с контролами [3]
(Button)
Forms [1]
Работа с формами
Сеть [1]
Работа с сетью
Compact Framework [1]
Compact Framework
Внешние устройства [1]
Работа с внешними устройствами

Главная » Статьи » CSharp » Работа с контролами

Создание контрола ColorButton
Создание контрола ColorButton.
 
 
 

Создание кнопки.

 

Наша кнопка будет иметь несколько состояний:

   - обычное состояние

   - состояние, когда курсор мыши наведен на кнопку

   - состояние нажатой кнопки

 

 
Эти состояния мы опишем в следующих функциях, которые будут использоваться при отрисовке кнопки в функции OnPaint:
  
protected void PaintNormalState(Graphics g)
{
   Rectangle newRect = new Rectangle(
      ClientRectangle.X + 1,
      ClientRectangle.Y + 1,
      ClientRectangle.Width - 2,
      ClientRectangle.Height - 2);
 
   brush = new LinearGradientBrush(
   newRect,
   m_color1,
   m_color2,
   mode);
 
   g.FillRectangle(brush, newRect);
   g.DrawRectangle(new Pen(m_color2, 1), newRect);
}
 
protected void PaintHoverState(Graphics g)
{
   Rectangle newRect = new Rectangle(
      ClientRectangle.X + 1,
      ClientRectangle.Y + 1,
      ClientRectangle.Width - 2,
      ClientRectangle.Height - 2);
 
   brush = new LinearGradientBrush(
      newRect,
      m_color2,
      m_color1,
      mode);
 
g.FillRectangle(brush, newRect);
g.DrawRectangle(new Pen(m_color2, 1), newRect);
}
 
protected void PaintClickedState(Graphics g)
{
   Rectangle newRect = new Rectangle(
      ClientRectangle.X + 1,
      ClientRectangle.Y + 1,
      ClientRectangle.Width - 2,
      ClientRectangle.Height - 2);
 
   brush = new LinearGradientBrush(
      newRect,
      m_color2,
      m_color2,
      mode);
 
   g.FillRectangle(brush, newRect);
   g.DrawRectangle(new Pen(m_color2, 1), newRect);
}
 
Ну и сама функция OnPaint будет выглядеть так:
 
protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
{
   mode = LinearGradientMode.Vertical;
   //Координаты текста в кнопке
   SizeF textSize = e.Graphics.MeasureString(Text, base.Font);
   int textX =
      (int)(base.Size.Width/2) - (int)(textSize.Width/2);
   int textY =
      (int)(base.Size.Height/2) - (int)(textSize.Height/2);
   switch (CurrentState)
   {
      case State.Normal:
         PaintNormalState(e.Graphics);
         break;
      case State.MouseOver:
         PaintHoverState(e.Graphics);
         break;
      case State.MouseClicked:
         PaintClickedState(e.Graphics);
         break;
   }
   e.Graphics.DrawString(
      Text,
      base.Font,
      new SolidBrush(base.ForeColor),
      textX + 1,
      textY + 1);
}
Категория: Работа с контролами | Добавил: dev (26.10.2007) | Автор: Седых Илья Николаевич E W
Просмотров: 2040 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Поиск

Наш опрос
Оцените мой сайт
Всего ответов: 91

Друзья сайта
alsproject.ru

Статистика

Copyright MyCorp © 2024Сайт управляется системой uCoz