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

на главную - закладки

Жанры

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

Салмре Иво

Шрифт:

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;

 }

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

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

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

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

Я еще князь. Книга XX

Дрейк Сириус
20. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я еще князь. Книга XX

Эпоха Опустошителя. Том X

Павлов Вел
10. Вечное Ристалище
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Эпоха Опустошителя. Том X

Граф

Первухин Андрей Евгеньевич
8. Ученик
Фантастика:
фэнтези
попаданцы
5.25
рейтинг книги
Граф

Менталист. Трансформация

Еслер Андрей
4. Выиграть у времени
Фантастика:
фэнтези
альтернативная история
7.28
рейтинг книги
Менталист. Трансформация

Я не князь. Книга XIII

Дрейк Сириус
13. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я не князь. Книга XIII

Хранилище

Старухин Евгений
5. Лесовик
Фантастика:
фэнтези
рпг
7.43
рейтинг книги
Хранилище

Антология странного рассказа

Коллектив авторов
Проза:
современная проза
5.00
рейтинг книги
Антология странного рассказа

Эволюционер из трущоб. Том 3

Панарин Антон
3. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
6.00
рейтинг книги
Эволюционер из трущоб. Том 3

Одержимая (авторский сборник)

Дяченко Марина и Сергей
Фантастика:
фэнтези
научная фантастика
7.80
рейтинг книги
Одержимая (авторский сборник)

Вернувшийся: Первые шаги. Том II

Vector
2. Вернувшийся
Фантастика:
боевая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Вернувшийся: Первые шаги. Том II

Газлайтер. Том 26

Володин Григорий Григорьевич
26. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Газлайтер. Том 26

Неучтенный элемент. Том 12

NikL
12. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 12

Государь

Кулаков Алексей Иванович
3. Рюрикова кровь
Фантастика:
мистика
альтернативная история
историческое фэнтези
6.25
рейтинг книги
Государь

Эпоха Опустошителя. Том IV

Павлов Вел
4. Вечное Ристалище
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Эпоха Опустошителя. Том IV