Чтение онлайн

ЖАНРЫ

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

Салмре Иво

Шрифт:

Imports System.Drawing

Friend Class GraphicsGlobals

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

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

' и кэшировать его для последующего использования.

'

'Внешний код получает доступ к общедоступным свойствам для их просмотра,

'но сами переменные остаются внутренними переменными класса

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

Private Shared s_bluePen As Pen

Public Shared ReadOnly Property globalBluePen As Pen

 Get

'Если
перо еще не было создано

If (s_bluePen Is Nothing) Then

s_bluePen = New System.Drawing.Pen( _

System.Drawing.Color.Blue)

End If

Return s_bluePen

 End Get

End Property

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

'Подход 2:

'Загрузить глобально и кэшировать все

'используемые объекты Pen, ImageAttribute, Font и Brush

'

'Внешний код получает доступ ко всем общедоступным членам,

'так что никакие функции доступа не нужны.

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

Public Shared g_blackPen As Pen

Public Shared g_whitePen As Pen

Public Shared g_ImageAttribute As Imaging.ImageAttributes

Private Shared s_alreadyInitialized As Boolean

Public Shared g_boldFont As Font

Public Shared g_smallTextFont As Font

Public Shared g_greenBrush As Brush

Public Shared g_yellowBrush As Brush

Public Shared g_redBrush As Brush

Public Shared g_blackBrush As Brush

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

'Эта функция должна быть вызвана до попыток доступа к любому из

'вышеперечисленных глобальных объектов

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

Public Shared Sub InitializeGlobals

 If (s_alreadyInitialized = True) Then Return

 g_blackPen = New Systera.Drawing.Pen(Color.Black)

 g_whitePen = New System.Drawing.Pen(Color.White)

 g_ImageAttribute = New _

System.Drawing.Imaging.ImageAttributes

 g_ImageAttribute.SetColorKey(Color.White, Color.White)

 g_boldFont = New Font(FontFamily.GenericSerif, _

10, FontStyle.Bold)

 g_smallTextFont = New Font(FontFamily.GenericSansSerif, _

8, FontStyle.Regular)

 g_blackBrush = New SolidBrush(System.Drawing.Color.Black)

 g_greenBrush = New SolidBrush(System.Drawing.Color.LightGreen)

 g_yellowBrush = New SolidBrush(System.Drawing.Color.Yellow)

 g_redBrush = New SolidBrush(System.Drawing.Color.Red)

 s_alreadyInitialized = True

End Sub

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

'Подход 3:
Возвратить массив связанных ресурсов.

' Кэшировать ресурсы локально, чтобы при многократных

' запросах не загружались (напрасно) их дубликаты

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

Private Shared m_CaveMan_Bitmap1 As Bitmap

Private Shared m_CaveMan_Bitmap2 As Bitmap

Private Shared m_CaveMan_Bitmap3 As Bitmap

Private Shared m_CaveMan_Bitmap4 As Bitmap

Private Shared m_colCaveManBitmaps As _

 System.Collections.ArrayList

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

'Создать и загрузить массив изображений для спрайта

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

Public Shared Function g_CaveManPictureCollection As _

 System.Collections.ArrayList

 'Изображения загружаются лишь в том случае, если мы их еще не загрузили

 If (m_CaveManBitmap1 Is Nothing) Then

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

'Загрузить изображения. Эти изображения хранятся в виде

'встроенных ресурсов в нашем двоичном приложении

'

'Загрузка изображений из внешних файлов осуществляется аналогичным

'образом, но выполнить ее проще (нам достаточно лишь указать

'имя файла в конструкторе растровых изображений).

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

'Получить ссылку на нашу двоичную сборку

dim thisAssembly as System.Reflection.Assembly = _

System.Reflection.Assembly.GetExecutingAssembly

'Получить имя сборки

Dim thisAssemblyName As System.Reflection.AssemblyName = _

thisAssembly.GetName

Dim assemblyName As String = thisAssemblyName.Name

Поделиться с друзьями: