КАТЕГОРИИ: Архитектура-(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; Просмотров: 363; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |