Программирование мобильных устройств на платформе .NET Compact Framework
Шрифт:
'Важно: Выполнить очистку!
'-------------------------
myBrush.Dispose
myGfx.Dispose
End Sub
Листинг 11.8. Подключение к функции Paint формы
'Кисти, которые мы хотим кэшировать, чтобы избавить себя от необходимости
'все время создавать их и уничтожать
Private m_brushBlue As System.Drawing.Brush
Private m_brushYellow As System.Drawing.Brush
'Ради интереса подсчитаем, сколько раз осуществлялся вызов
Private m_paintCount As Integer
'-----------------------------------------------------------------------------
'Мы перекрываем обработчики событий Paint наших базовых классов. Это означает,
'что каждый раз, когда форма вызывается для перерисовки самой себя, будет
'вызываться эта функция.
'-----------------------------------------------------------------------------
Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
'ВАЖНО: Вызвать базовый класс и дать ему возможность
'выполнить всю необходимую работу по рисованию
MyBase.OnPaint(e)
'Увеличить на 1 значение счетчика вызовов
m_paintCount = m_paintCount + 1
'--------------------------------------------------------------------------
'Важно:
'Вместо того чтобы создавать объект Graphics, мы получаем его
'на время данного вызова. Это означает, что освобождать память путем вызова
'метода .Dispose объекта - не наша забота
'--------------------------------------------------------------------------
Dim myGfx As System.Drawing.Graphics
myGfx = e.Graphics
'-------------------------------------------------------------------
'Поскольку эту операцию рисования необходимо выполнить быстро,
'кэшируем кисти, чтобы избавить себя от необходимости создавать их и
'уничтожать при каждом вызове
'-------------------------------------------------------------------
If (m_brushBlue Is Nothing) Then
m_brushBlue = New System.Drawing.SolidBrush( _
System.Drawing.Color.Blue)
End If
If (m_brushYellow Is Nothing) Then
m_brushYellow = New System.Drawing.SolidBrush( _
System.Drawing.Color.Yellow)
End If
'-------------------
'Выполнить рисование
'-------------------
myGfx.FillRectangle(m_brushBlue, 2, 2, 100, 100)
myGfx.DrawString("PaintCount: " + CStr(m_paintCount), _
Me.Font, m_brushYellow, 3, 3)
'Выход: Объекты, для которых мы должны были бы вызывать метод
'.Dispose, отсутствуют.
End Sub
Листинг 11.9. Простой пользовательский элемент управления, который изменяет цвета и запускает событие, определяемое пользователем
'Простейший пользовательский элемент управления
Public Class myButton
Inherits System.Windows.Forms.Control
'--------------------------------------
'Объекты, необходимые нам для рисования
'--------------------------------------
Private m_RectangleBrush As System.Drawing.Brush
Private m_TextBrush As System.Drawing.Brush
Private m_RectangleColor As System.Drawing.Color
'------------------------------------------------------------------------
'Событие, которое мы хотим предоставить на обработку. Это - общедоступный
'делегат.
'------------------------------------------------------------------------
Public Event EventButtonTurningBlue(ByVal sender As Object, _
ByVal e As System.EventArgs)
'Конструктор
Public Sub New
MyBase.New
'ПРИМЕЧАНИЕ: Мы должны написать функцию "Dispose" и
'деструктор, который освобождает память от этих объектов
'Создать необходимые кисти
m_RectangleColor = System.Drawing.Color.Black
m_RectangleBrush = New System.Drawing.SolidBrush( _
m_RectangleColor)
m_TextBrush = New System.Drawing.SolidBrush( _
System.Drawing.Color.White)
End Sub
'-----------------------------------------------
'Внутренним откликом на щелчок является
Поделиться:
Популярные книги
Тактик
2. Офицер
Фантастика:
альтернативная история
7.70
рейтинг книги
Твое сердце будет разбито. Книга 1
Любовные романы:
современные любовные романы
5.50
рейтинг книги
Кодекс Охотника. Книга XXIII
23. Кодекс Охотника
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Хозяин Стужи 6
6. Злой Лед
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Феодал. Том 2
2. Диктатура Параметров
Фантастика:
рпг
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Наномашины, Кошмар Академии! Том 10
10. Первый среди карапузов
Фантастика:
аниме
попаданцы
5.00
рейтинг книги
Аспирант
3. Рунный маг
Фантастика:
боевая фантастика
4.50
рейтинг книги
Убивать чтобы жить 5
5. УЧЖ
Фантастика:
боевая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Наследие Маозари 2
2. Наследие Маозари
Фантастика:
попаданцы
рпг
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XII
12. Кодекс Охотника
Фантастика:
боевая фантастика
городское фэнтези
аниме
7.50
рейтинг книги
Хозяин Стужи 7
7. Злой Лед
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 6
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
Глэрд IX: Легионы во Тьме
9. Глэрд
Фантастика:
боевая фантастика
попаданцы
фэнтези
5.00
рейтинг книги
Геном хищника. Книга шестая
6. Я - Легенда!
Старинная литература:
прочая старинная литература
5.00