Литмир - Электронная Библиотека
Содержание  
A
A

 public static Font g_smallTextFont;

 public static Brush g_greenBrush;

 public static Brush g_yellowBrush;

 public static Brush g_redBrush;

 public static Brush g_blackBrush;

 //==============================================================

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

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

 //==============================================================

 public static void InitializeGlobals() {

  if (s_alreadyInitialized == true) {

   return;

  }

  g_blackPen = new System.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;

 }

 //=========================================================

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

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

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

 //=========================================================

 private static Bitmap m_CaveMan_Bitmap1;

 private static Bitmap m_CaveMan_Bitmap2;

 private static Bitmap m_CaveMan_Bitmap3;

 private static Bitmap m_CaveMan_Bitmap4;

 private static System.Collections.ArrayList m_colCaveManBitmaps;

 //--------------------------------------------------

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

 //--------------------------------------------------

 public static System.Collections.ArrayList g_CaveManPictureCollection() {

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

  if (m_CaveMan_Bitmap1 == null) {

   //-----------------------------------------------------------------

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

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

   //

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

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

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

   //------------------------------------------------------------------

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

   System.Reflection.Assembly thisAssembly = System.Reflection.Assembly.GetExecutingAssembly();

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

   System.Reflection.AssemblyName thisAssemblyName = thisAssembly.GetName();

   string assemblyName = thisAssemblyName.Name;

   //Загрузить изображения в виде двоичных потоков из нашей сборки

   m_CaveMan_Bitmap1 = new System.Drawing.Bitmap(

    thisAssembly.GetManifestResourceStream(

    assemblyName + ".Hank RightRunl.bmp"));

   m_CaveMan_Bitmap2 = new System.Drawing.Bitmap(

    thisAssembly.GetManifestResourceStream(

    assemblyName + ".Hank_RightRun2.bmp"));

   m_CaveMan_Bitmap3 = new System.Drawing.Bitmap(

    thisAssembly.GetManifestResourceStream(

    assemblyName + ".Hank_LeftRun1.bmp"));

   m_CaveMan_Bitmap4 = new System.Drawing.Bitmap(

    thisAssembly.GetManifestResourceStream(

    assemblyName + ".Hank_LeftRun2.bmp"));

   //Добавить их в коллекцию

   m_colCaveManBitmaps = new System.Collections.ArrayList();

   m_colCaveManBitmaps.Add(m_CaveMan_Bitmap1);

   m_colCaveManBitmaps.Add(m_CaveMan_Bitmap2);

   m_colCaveManBitmaps.Add(m_CaveMan_Bitmap3);

   m_colCaveManBitmaps.Add(m_CaveMan_Bitmap4);

  }

  //Возвратить коллекцию

  return m_colCaveManBitmaps;

 }

} //Конец класса

Старайтесь избегать распределения памяти для объектов при выполнении повторяющихся или непрерывно продолжающихся операций рисования

Выполнение лишних операций размещения и уничтожения объектов в памяти является одной из наиболее распространенных причин ухудшения производительности графического кода. Графический код часто выполняется внутри циклов или многократно вызывается. Кроме того, поскольку графические объекты используют значительные объемы памяти, а также системные ресурсы, с их обслуживанием связаны сравнительно большие накладные расходы. Если ваше мобильное приложение распределяет и освобождает память всякий раз, когда необходимо визуализировать изображения, то вы неминуемо столкнетесь с проблемами нехватки памяти, что обусловит необходимость частого выполнения операций по сборке мусора, замедляющих работу приложения. В связи с этим необходимо предельно внимательно анализировать любые участки кода, требующие распределения памяти для объектов в процессе визуализации графики. Особенно это касается объектов, связанных с графическими ресурсами, но остается справедливым и по отношению к объектам другой природы (например, коллекциям, массивам, строкам), которые могут фигурировать в таком коде.

128
{"b":"947732","o":1}