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

ЖАНРЫ

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

s_colPlayerBitmaps.Add(s_Player_Bitmap2);

s_colPlayerBitmaps.Add(s_Player_Bitmap3);

s_colPlayerBitmaps.Add(s_Player_Bitmap4);

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

return s_colPlayerBitmaps;

}

private static System.Drawing.Pen s_blackPen;

private static System.Drawing.Pen s_whitePen;

private static System.Drawing.Imaging.ImageAttributes s_ImageAttribute;

private static System.Drawing.Font s_boldFont;

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

//Вызывается для освобождения от любых графических

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

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

private static void g_CleanUpDrawingResources {

//Освободить память от черного пера, если таковое имеется

if (s_blackPen !=null) {

s_blackPen.Dispose;

s_blackPen = null;

}

// Освободить память от белого пера, если таковое имеется

if (s_whitePen != null) {

s_whitePen.Dispose;

r_whitePen = null;

}

//Освободить память от атрибута ImageAttribute, если таковой имеется.

//Примечание. Метод Dispose для этого типа не предусмотрен,

//поскольку все его данные являются управляемыми

if (s_ImageAttribute != null) {

s_ImageAttribute = null;

}

//Освободить память от полужирного шрифта, если таковой имеется

if (s_boldFont != null) {

s_boldFont.Dispose;

s_boldFont = null;

}

}

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

//Эта функция позволяет получить доступ

//к черному перу, находящемуся в кэш-памяти

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

private static System.Drawing.Pen g_GetBlackPen {

//Если перо еще не существует, создать его

if (s_blackPen ==null) {

s_blackPen = new System.Drawing.Pen(System.Drawing.Color.Black);

}

//Возвратить черное перо return s_blackPen;

}

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

//Эта функция позволяет получить доступ

//к белому перу, находящемуся в кэш-памяти

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

private static System.Drawing.Pen g_GetWhitePen {

//Если перо еще не существует, создать его

if (s_whitePen == null) {

s_whitePen = new System.Drawing.Pen(System.Drawing.Color.White);

}

//Возвратить белое перо return s_whitePen;

}

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

//Эта функция позволяет получить доступ

//к полужирному шрифту, находящемуся в кэш-памяти

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

private static System.Drawing.Font g_GetBoldFont {

//Если перо еще не существует, создать его

if (s_boldFont ==null) {

s_boldFont = new System.Drawing.Font(

System.Drawing.FontFamily.GenericSerif, 10, System.Drawing.FontStyle.Bold);

}

//Возвратить полужирный шрифт

return s_boldFont;

}

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

//Эта функция позволяет осуществлять доступ

//к находящемуся в кэш-памяти объекту imageAttributes,

// который мы используем для изображений с прозрачностью

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

private static System.Drawing.Imaging.ImageAttributes g_GetTransparencyImageAttribute {

//Если объект не существует, создать его

if (s_ImageAttribute == null) {

//Создать атрибут изображения

s_ImageAttribute = new System.Drawing.Imaging.ImageAttributes;

s_ImageAttribute.SetColorKey(System.Drawing.Color.White, System.Drawing.Color.White);

}

//Возвратить его

return s_ImageAttribute;

}

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

Управление памятью на микроскопическом "уровне алгоритма"

Современные языки программирования, библиотеки классов и управляемые среды времени выполнения позволили значительно повысить продуктивность написания программ. В то же время, избавляя программиста от необходимости задумываться о низкоуровневом распределении памяти, в котором нуждаются алгоритмы, они невольно создают предпосылки для написания неэффективного кода. Неэффективность кода может быть обусловлена причинами двоякого рода:

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