
- •Visual Basic .Net
- •Visual Basic .Net
- •Visual c#
- •314 Создание элементов управления с помощью .Net Framework Глава 7
- •Visual Basic .Net
- •Visual c#
- •Visual Basic .Net
- •Visual c#
- •Visual Basic .Net
- •Visual c#
- •Visual Basic .Net
- •Visual c#
- •Visual Basic .Net
- •Visual c#
- •Visual Basic .Net
- •Visual c#
- •Visual Basic .Net
- •Visual c#
- •Visual c#
- •Visual Basic .Net
- •Visual c#
- •Visual Basic .Net
- •Visual c#
- •Visual Basic .Net
- •Visual c#
- •Visual Basic .Net
- •Visual c#
- •Visual Basic .Net
- •Visual c#
- •Visual Basic .Net
- •Visual c#
- •Visual Basic .Net
- •Visual c#
- •Visual Basic .Net
- •Visual c#
- •Visual Basic .Net
- •Visual c#
- •Visual Basic .Net
- •Visual c#
- •Visual Basic .Net
- •2. В окне New Project выберите шаблон Windows Application, назовите новый про-
- •3. В меню Project выберите команду Add New Item — откроется одноименное диа-
- •4. В диалоговом окне Add New Item выберите Custom Control, назовите новый эле-
- •5. В окне Solution Explorer щелкните правой кнопкой элемент управления Pretty-
- •1. В окне редактора кода поместите в начало кода следующие операторы, импор-
- •Visual c#
- •Visual Basic .Net
2. В окне New Project выберите шаблон Windows Application, назовите новый про-
ект ControlTest.vb (или ControlTest.cs) и щелкните ОК.
3. В меню Project выберите команду Add New Item — откроется одноименное диа-
логовое окно.
4. В диалоговом окне Add New Item выберите Custom Control, назовите новый эле-
мент управления соответственно PrettyClock.vb или (PrettyClock.cs) и щелкните
Open — к проекту будет добавлен новый нестандартный элемент управления.
5. В окне Solution Explorer щелкните правой кнопкой элемент управления Pretty-
Clock и выберите из контекстного меню команду View Code — откроется окно
Code. Обратите внимание, что метод OnPaint переопределен и содержит вместо
реализации заглушку и комментарий, указывающий, что сюда нужно добавить
код, выполняющий визуализацию.
Теперь пора писать код. Наш элемент управления будет отображать текущее вре-
мя в прямоугольной области экрана. Для его прорисовки применяется метод Linear-
GradieniBrush, поддерживающий интересные графические эффекты. Вы также реа-
лизуете у своего элемента управления свойства, позволяющие разработчикам уп-
равлять его обликом Е период выполнения.
1. В окне редактора кода поместите в начало кода следующие операторы, импор-
тирующие пространства имен Sysfem. Drawing и System.Drawing. Drawing2D:
Visual Basic .NET
Imports System. Drawing
Imports System. Drawing. Drawing2D
Visual C#
// В С# опеэатор "using System. Drawing; ' добавлен по умолчанию
using System. Drawing. Drawing2D;
2. Добавьте свойства, хранящие описание цвета. Оно, вместе со свойством Fore-
Color, унаследованным от базового класса, предназначено для создания объекта
LinearGradient Brush, визуализирующего нестандартный элемент управления. Вот
примерный код этого свойства:
Visual Basic .NET
Объявить закрытую переменную для хранения значения Color.
Private rriForeColorTwo As Color
Это реализация свойства.
Public Property ForeColorTwo() As Color
Get
Return mForeColorTwo
End Get
Set(ByVal Value As Color)
mForeColorTwo - Value
End Set
End Property
Visual C#
// Объявить закрытую переменную для хранения значения Color,
orivate Color mForeColorTwo;
// Это реализация свойства.
public Color ForeColorTwo
{
g -
{
return mForeColorTwo;
;
set
{
mForeColorTwo = value;
3. Добавьте свойство Angle типа Single (float) для хранения значения угла, необхо-
димого методу LinearGradient Brush. Поскольку его значение выражается в граду-
сах, потребуется код, проверяющий, что введенное значение не меньше 0 и не
больше 360. Вот код этого свойства:
338 Создание элементов управления с помощью .NET Framework Глава 7
Visual Basic .NET
Private mAngle As Single
Public Property Angle{) As Single
Get
Return mAngle
End Get
Set(8yVal Value As Single)
' Такая схема устанавливает минимальное значение при попытке
' ввести слишком большее значение и наоборот. Это обеспечивает
1 непрерывное приращение значения свойства.
If Value > 360 then
mAngle = О
Elself Value < 0 then
TiAngle = 360
Else
mAngle = Value
End If
End Set
End Property
Visual C#
private float mAngle;
public float Angle
{
get
!
return rnAngle;
}
set
!
// Такая схема устанавливает минимальное значение при попытке
// ввести слишком большее значение и наоборот. Это обеспечивает
// непрерывное приращение значения свойства,
if (value > 360)
mAngle = 0;
else if (value < 0)
mAngle = 360;
else
mAngle = value;
>
:
4. Добавьте в метод OnPaint код, создающий объект LinearGradient Brush и отобра-
жающий текущее время с помощью объекта Font. Для создания объекта Linear-
GradientBrush вам потребуются свойства Size, ForeColom ForeColorTwo, которые
можно использовать так:
Visual Basic .NET
Создать представляющий элемент управления прямоугольник, заданный
точкой верхнего левого угла и свойством Size.
Dim ControlRectangle As New Rectangle(New PointfO, 0), Me.Size)
Создать новый объект LinearGradientBrush, определяющий переход
между цветами ForeColor и ForeColorTwo с учетом заданного угла,
Dim myBrusn As New LinearGradientBrush(ControlRectangle,
ForeColor, ForeColorTwo, Angle)
Создать объект GraphicsPath, хранящий отображаемый текст,
Dim myPath As New GraphicsPathO
Записать в объект GraphicsPath строку, представляющую текущее время.
TiyPath. AddSt ring (Now. ToLongTimeSt ring ()r Font. FontFamily,
Font.Style, Font.Size, New PointfO. 0).
StringFormat.GenericDefault)
Показать Graphics,
pe.Graphics.FillPath(my6rush, myPath)