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

Салмре Иво

Шрифт:
Листинг 11.11. Три полезных способа кэширования графических ресурсов

using System;

using System.Drawing;

internal class GraphicsGlobals {

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

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

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

//

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

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

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

private static Pen s_bluePen;

public static Pen globalBluePen {

get {

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

if (s_bluePen == null) {

s_bluePen =new System.Drawing.Pen(System.Drawing.Color.Blue);

}

return s bluePen;

}

} //Конец свойства

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

//Подход 2:

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

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

//

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

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

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

public static Pen g_blackPen;

public static Pen g_whitePen;

public static System.Drawing.Imaging.ImageAttributes g_ImageAttribute;

private static bool s_alreadyInitialized;

public static Font g_boldFont;

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;

  • Читать дальше
  • 1
  • ...
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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