Программирование мобильных устройств на платформе .NET Compact Framework (Салмре) - страница 563

>'Создает объект Graphics для формы и осуществляет рисование

>'----------------------------------------------------------

>Private Sub Button1_Click(ByVal sender As System.Object, _

> ByVal e As System.EventArgs) Handles Button1.Click

> 'Создать объект Graphics для формы

> Dim myGfx As System.Drawing.Graphics

> myGfx = Me.CreateGraphics()


> 'Создать кисть

> Dim myBrush As System.Drawing.Brush

> myBrush = New System.Drawing.SolidBrush( _

>  System.Drawing.Color.DarkGreen)

> 'Заполнить прямоугольник

> myGfx.FillRectangle(myBrush, 4, 2, 60, 20)


> '-------------------------

> 'Важно: Выполнить очистку!

> '-------------------------

> 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


> '-------------------