Вход/Регистрация
Программирование мобильных устройств на платформе .NET Compact Framework
вернуться

Салмре Иво

Шрифт:

 PictureBox1.Image = myBitmap

End Sub

Листинг 11.7. Создание объекта Graphics для формы

'----------------------------------------------------------

'Создает объект 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

 '-------------------

 'Выполнить рисование

 '-------------------

 myGfx.FillRectangle(m_brushBlue, 2, 2, 100, 100)

 myGfx.DrawString("PaintCount: " + CStr(m_paintCount), _

Me.Font, m_brushYellow, 3, 3)

  • Читать дальше
  • 1
  • ...
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • 279
  • 280
  • 281
  • 282
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: