Читаем Программирование мобильных устройств на платформе .NET Compact Framework полностью

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

 'ВАЖНО: Вызвать базовый класс и позволить ему

 'выполнить работу по рисованию

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

 MyBase.OnPaint(e)


 'Увеличить на единицу значение счетчика вызовов

 m_paintCount = m_paintCount + 1


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

 'Важно:

 'Вместо того чтобы создавать объект Graphics, мы получаем его

 'на время данного вызова. Это означает, что освобождать память путем вызова

 'метода .Dispose объекта - не наша забота

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

 Dim myGfx As System.Drawing.Graphics

 myGfx = e.Graphics


 'Нарисовать прямоугольник

 myGfx.FillRectangle(m_RectangleBrush, 0, 0, _

  Me.Width, Me.Height)


 'Нарисовать текст

 myGfx.DrawString("Button! Paint: " + m_paintCount.ToString, _

  Me.Parent.Font, m_TextBrush, 0, 0)

End Sub

End Class

Листинг 11.10. Код, который должен быть помещен в форму для создания экземпляра пользовательского элемента управления

'Наша новая кнопка

Private m_newControl As myButton


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

'Этот код будет подключен в качестве нашего обработчика событий

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

Private Sub CallWhenButtonTurningBlue(ByVal sender As Object, _

 ByVal e As System.EventArgs)

 MsgBox("Кнопка становится синей!")

End Sub


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

'Эта функция подключается для обработки событий

'щелчка на кнопке Button1

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

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

 ByVal e As System.EventArgs) Handles Button1.Click


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

 'Для простоты мы допускаем существование только

 'одного экземпляра элемента управления,

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

 If Not (m_newControl Is Nothing) Then Return

  'Создать экземпляр нашей кнопки

  m_newControl = New myButton

  'Указать ему его местоположение внутри родительского объекта

  m_newControl.Bounds = New Rectangle(10, 10, 150, 40)


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

 'Присоединить обработчик событий

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

 AddHandler m_newControl.EventButtonTurningBlue, _

  AddressOf CallWhenButtonTurningBlue

 'Добавить его в список элементов управления данной формы.

 'Это сделает его видимым

 Me.Controls.Add(m_newControl)

End Sub

Листинг 11.11. Три полезных способа кэширования графических ресурсов

Imports System

Imports System.Drawing


Friend Class GraphicsGlobals

'=======================================================================

'Подход 1: Создать ресурс по требованию

Перейти на страницу:

Похожие книги

Программист-прагматик. Путь от подмастерья к мастеру
Программист-прагматик. Путь от подмастерья к мастеру

Находясь на переднем крае программирования, книга "Программист-прагматик. Путь от подмастерья к мастеру" абстрагируется от всевозрастающей специализации и технических тонкостей разработки программ на современном уровне, чтобы исследовать суть процесса – требования к работоспособной и поддерживаемой программе, приводящей пользователей в восторг. Книга охватывает различные темы – от личной ответственности и карьерного роста до архитектурных методик, придающих программам гибкость и простоту в адаптации и повторном использовании.Прочитав эту книгу, вы научитесь:Бороться с недостатками программного обеспечения;Избегать ловушек, связанных с дублированием знания;Создавать гибкие, динамичные и адаптируемые программы;Избегать программирования в расчете на совпадение;Защищать вашу программу при помощи контрактов, утверждений и исключений;Собирать реальные требования;Осуществлять безжалостное и эффективное тестирование;Приводить в восторг ваших пользователей;Формировать команды из программистов-прагматиков и с помощью автоматизации делать ваши разработки более точными.

Эндрю Хант , Дэвид Томас , А. Алексашин

Программирование / Книги по IT
Разработка ядра Linux
Разработка ядра Linux

В книге детально рассмотрены основные подсистемы и функции ядер Linux серии 2.6, включая особенности построения, реализации и соответствующие программны интерфейсы. Рассмотренные вопросы включают: планирование выполнения процессов, управление временем и таймеры ядра, интерфейс системных вызовов, особенности адресации и управления памятью, страничный кэш, подсистему VFS, механизмы синхронизации, проблемы переносимости и особенности отладки. Автор книги является разработчиком основных подсистем ядра Linux. Ядро рассматривается как с теоретической, так и с прикладной точек зрения, что может привлечь читателей различными интересами и потребностями.Книга может быть рекомендована как начинающим, так и опытным разработчикам программного обеспечения, а также в качестве дополнительных учебных материалов.

Роберт Лав

Программирование, программы, базы данных / Программирование / Книги по IT