' и кэшировать его для последующего использования.
'
'Внешний код получает доступ к общедоступным свойствам для их просмотра,
'но сами переменные остаются внутренними переменными класса
'=======================================================================
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