Книга: Программирование мобильных устройств на платформе .NET Compact Framework
Листинг 11.8. Подключение к функции Paint формы
Листинг 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.1. Заполнение данными и очистка от них элементов управления TreeView с использованием альтернативных стратегий
- Листинг 11.2. Динамическое заполнение данными элемента управления TreeView
- Листинг 11.3. Запуск обработчика событий при изменении содержимого элемента TextBox программным путем
- Листинг 11.4. Использование модели состояний для обновления интерфейса и контроль запуска событий с целью более глубокого изучения процесса обработки событий и управления им
- Листинг 11.5. Вызов метода Update() элемента управления для отображения пояснительного текста, информирующего о ходе выполнения задачи
- Листинг 11.6. Создание изображения на внеэкранной растровой поверхности и передача его в элемент управления PictureBox
- Листинг 11.7. Создание объекта Graphics для формы
- Листинг 11.8. Подключение к функции Paint формы
- Листинг 11.9. Простой пользовательский элемент управления, который изменяет цвета и запускает событие, определяемое пользователем
- Листинг 11.10. Код, который должен быть помещен в форму для создания экземпляра пользовательского элемента управления
- Листинг 11.11. Три полезных способа кэширования графических ресурсов
- Обработчики событий или перекрытые функции?
- Листинг 11.7. Создание объекта Graphics для формы
- Сеансы Paint
- Листинг 10.1. (simpleid.c) Отображение идентификаторов пользователя и группы
- Аргументы функции в Python
- Глава 5 Агрессивные формы кода и борьба с ними
- 3. Функции
- Новые функции API для работы с Blob и массивами
- Листинг 15.11. Код для загрузки файла с Web-сервера
- Математические функции
- Размытые функции
- 2.5. Активная и пассивная формы интеллектуальной деятельности