C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Хранение изображений, Какие классы есть для хранения...
hell_admin
  Отправлено: 17.11.2004, 23:47


Ученик-кочегар

Группа: Участник
Сообщений: 8



Здрасте все, проблема такая нужен список изображений JPEG и BMP с индексами так что бы можно было из этого списка взять изображение под номером n...

Посоветуйте какой-нибудь класс.

Что то типа TImageList только что-бы и JPEG изображения в нем хранились.. т.е. Список объектов TGraphic...

Никто раньше такую хрень не делал?

Заранее спасибо..
olegenty
Отправлено: 18.11.2004, 07:08


Ветеран

Группа: Модератор
Сообщений: 2412



вот контейнер, заточенный под хранение указателей на что-либо.
CODE

///////////////////////////////////////////////////////////////////////////////
//
// Шаблонный класс-список объектов-указателей
//
template <class C, bool bFreeItems> class CPtrList: public TList
{
private:
   inline C* __fastcall GetItem(int Index) {return reinterpret_cast<C*>(TList::Items[Index]);}
   inline void __fastcall SetItem(int Index, C* Value) {TList::Items[Index] = Value;}
public:
   __fastcall CPtrList(): TList() {;}
   __fastcall ~CPtrList()
   {
       if (bFreeItems)
       {
           for (int i = 0; i < Count; i++)
           {
               if (Items[i])
               {
                   delete reinterpret_cast<C*>(Items[i]);
               }
           }
       }
   };
   inline void __fastcall Add(C* pItem) {TList::Add(pItem);}
   inline void __fastcall Delete(int iIndex) {TList::Delete(iIndex);}
   inline C* __fastcall Last() {return reinterpret_cast<C*>(TList::Last());}
   __property C* Items[int Index] = {read = GetItem, write = SetItem};
};


Использовать так:
CODE

class CBitmapList: public CPtrList<Graphics::TBitmap, true[false]>
{
};


Второй параметр говорит, валить ли экземпляры хранящегося класса при разрушении списка.
hell_admin
Отправлено: 18.11.2004, 13:52


Ученик-кочегар

Группа: Участник
Сообщений: 8



Спасибо!

Вернуться в Вопросы программирования в C++Builder