Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Программная реализация элемента управления




Теперь пора писать код. Наш элемент управления будет отображать текущее время в прямоугольной области экрана. Для его прорисовки применяется метод LinearGradieniBrush, поддерживающий интересные графические эффекты. Вы также реализуете у своего элемента управления свойства, позволяющие разработчикам управлять его обликом впериод выполнения.

1. В окне редактора кода поместите в начало кода следующие операторы, импортирующие пространства имен System. Drawing и System.Drawing. Drawing2D

using System. Drawing;

using System. Drawing. Drawing2D;

2. Добавьте свойства, хранящие описание цвета. Оно, вместе со свойством ForeColor, унаследованным от базового класса, предназначено для создания объекта LinearGradient Brush, визуализирующего нестандартный элемент управления. Вот примерный код этого свойства:

// Объявить закрытую переменную для хранения значения Color,

private Color mForeColorTwo;

// Это реализация свойства.

public Color ForeColorTwo

{

get{ return mForeColorTwo; }

set{ mForeColorTwo = value; }

}

3. Добавьте свойство Angle типа Single (float) для хранения значения угла, необходимого методу LinearGradient Brush. Поскольку его значение выражается в градусах, потребуется код, проверяющий, что введенное значение не меньше 0 и не больше 360. Вот код этого свойства:

private float mAngle;

public float Angle

{

get{ return mAngle; }

set

{

// Такая схема устанавливает минимальное значение при попытке

// ввести слишком большее значение и наоборот. Это обеспечивает

// непрерывное приращение значения свойства,

if (value > 360) mAngle = 0;

else

{

if (value < 0) mAngle = 360;

else mAngle = value;

}

}

}

4. Добавьте в метод OnPaint код, создающий объект LinearGradient Brush и отображающий текущее время с помощью объекта Font. Для создания объекта LinearGradientBrush вам потребуются свойства Size, ForeColom ForeColorTwo, которые можно использовать так:

// Создать представляющий элемент управления прямоугольник, заданный

// точкой верхнего левого угла и свойством Size.

Rectangle ControlRectangle = new Rectangle(new Point(0, 0), this.Size);

// Создать новый объект LinearGradientBrush, определяющий переход

// между цветами ForeColor и ForeColorTwo с учетом заданного угла.

LinearGradientBrush myBrush = new LinearGradientBrush(ControlRectangle, ForeColor,

ForeColorTwo, Angle);

// Создать объект GraphicsPath, хранящий отображаемый текст.

GraphicsPath myPath = new GraphicsPath();

// Записать в объект GrapnicsPath строку, представляющую текущее время.

myPath.AddString(System.DateTime.Now.ToLongTimeString(), Font.FontFamily,

(int)Font.Style, Font.Size, new PointF(0, 0), StringFormat.GenericDefault);

// Показать Graphics,

pe.Graphics.FillPath(myBrush, myPath);

Теперь поместите код для создания нового пера из объекта LinearGradientBrush. Прорисуйте этим пером прямоугольник, представляющий область элемента управления. Для этого потребуется следующий код:

// Создать из объекта myBrush перо толщиной 8 пикселов

Pen myPen = new Pen(myBrush, 8);

// и нарисовать им прямоугольник, совпадающий с областью элемента управления.

pe.Graphics.DrawRectangle(myPen, ControlRectangle);

6. Выберите в меню File команду Save All, чтобы сохранить проект. Сейчас вы добавите в конструктор код, инициализирующий свойства элемента управления. Кроме того, вы добавите компонент Timer и код для ежесекундной перерисовки часов и отображения интересного графического эффекта.

2.2.4. Настройка компонента Timer

1. В окне Solution Explorer щелкните правой кнопкой компонент PrettyClock к выберите из контекстного меню команду View Designer — откроется окно дизайнера.

2. Перетащите компонент Timer с вкладки Windows Forms панели Toolbox на поверхность формы.

3. В окне Properties установите свойства Interval в 1000, а свойство Enabled - в true.

4. Дважды щелкните компонент Тimer окне дизайнера, чтобы открыть обработчик событий Timer.Tick, и добавьте к нему следующий код:

// Этот кода изменяет вид графического эффекта при изменении значения Tick.

Angle += 10;

// Перерисовать элемент управления.

this.Refresh();

5. Сохраните проект, выбрав команду Save All в меню File.




Поделиться с друзьями:


Дата добавления: 2015-07-02; Просмотров: 345; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.045 сек.