Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/27: Рейтинг темы: голосов - 27, средняя оценка - 4.78
5 / 5 / 2
Регистрация: 04.07.2010
Сообщений: 200
1

Массив изображений

13.04.2012, 23:42. Показов 4949. Ответов 8
Метки нет (Все метки)

как создать массив в котором возможно хранить некоторое количество изображений.
если это невозможно то как хранить временные изображения?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.04.2012, 23:42
Ответы с готовыми решениями:

Массив из изображений в TImage
Нужно создать массив, чтобы изображения( находятся в корневой папке программы) по нажатию кнопки...

Создать массив изображений
Всем привет. Мне нужно, используя библиотеку opencv, создать массив изображений. Суть такова:...

Массив изображений
возникла одна проблема у меня есть у меня таблица в базе там поле img, в этой поле у меня находится...

Массив изображений
Доброго времени суток! записал массив изображений: inf.foto:=TImage.Create(Image5); при его...

__________________

Записывайтесь на профессиональные курсы C++ разработчиков
8
Эксперт С++
8359 / 6097 / 610
Регистрация: 10.12.2010
Сообщений: 28,414
Записей в блоге: 30
14.04.2012, 03:24 2
C++
1
2
3
4
Graphics::TBitmap *Bitmap= new Graphics::TBitmap;
Bitmap->LoadFromFile("1.bmp");
Image1->Picture->Bitmap->Assign(Bitmap);
delete Bitmap;
Тоже самое можно делать создавая массив TBitmap (а можно еще TIcon и др графические типы)
0
LK
Заблокирован
14.04.2012, 03:49 3
Avazart, вот и покажите, как создать именно массив изображений - TBitmap (а можно еще TIcon и др графические типы).
0
Эксперт С++
8359 / 6097 / 610
Регистрация: 10.12.2010
Сообщений: 28,414
Записей в блоге: 30
14.04.2012, 04:13 4
C++
1
2
3
4
  Graphics::TBitmap* Bitmap[10];
 for(int i=0;i<10;i++)   Bitmap[i]= new Graphics::TBitmap;
 // ....
 for(int i=0;i<10;i++)  delete Bitmap[i];
1
Эксперт С++
3942 / 1797 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
14.04.2012, 22:57 5
В качестве альтернативы многие предпочитают использовать массив нетипированных указателей TList:
C++
1
TList *ImageList = new TList();
Создаём несколько объектов класса Graphics::TBitmap:
C++
1
2
3
4
5
Graphics::TBitmap *Bitmap1 = new Graphics::TBitmap();
Bitmap1->LoadFromFile("PathToImage1");
 
Graphics::TBitmap *Bitmap2 = new Graphics::TBitmap();
Bitmap2->LoadFromFile("PathToImage2");
Добавляем указатели на объекты "в базу объектов" TList:
C++
1
2
ImageList->Add(Bitmap1);
ImageList->Add(Bitmap2);
И когда необходимо обращаемся к нужному объекту:
C++
1
2
3
4
5
Graphics::TBitmap *Bitmap = static_cast <Graphics::TBitmap *> (ImageList->Items[0]);
if (Bitmap) {
  // любые действия
  Bitmap->Canvas->Rectangle(0,0,10,10);
}
Хочу напомнить о том, что TList это всего лишь база указателей. То есть, запись вида:
C++
1
ImageList->Delete(0);
удалит только указатель из базы, но никак не повлияет на сам объект.
1
Эксперт С++
8359 / 6097 / 610
Регистрация: 10.12.2010
Сообщений: 28,414
Записей в блоге: 30
14.04.2012, 23:08 6
Никогда не понимал такого подхода
На мой взгляд куда удобнее
C++
1
std::vector<Graphics::TBitmap*> pbitmaps;
А вообще как вариант прописать свой класс который создает и удаляет TBitmap который внутри него.
0
Эксперт С++
3942 / 1797 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
14.04.2012, 23:16 7
Avazart, методов очень много, каждый выбирает свой

К тому же, std::vector требует указания типа.
TList - массив нетипированных указателей.

Ну и возможно, кто-нибудь к плюсам добавит то, что TList находится в System.Classes.hpp, которая автоматически подключается ко всем визуальным приложениям. Таким образом, не требуется добавлять ничего лишнего, как в случае с #include <vector>

Не по теме:

У каждого свои тараканы в голове, кому-то быть может "жалко память" :D

1
Эксперт С++
8359 / 6097 / 610
Регистрация: 10.12.2010
Сообщений: 28,414
Записей в блоге: 30
14.04.2012, 23:35 8
К тому же, std::vector требует указания типа.
А разве так нельзя объявить?
C++
1
std::vector<void*> pbitmaps;
0
Эксперт С++
3942 / 1797 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
15.04.2012, 00:02 9
Avazart, можно, но тогда куда-то девается то удобство, о котором вы начали упоминать...
Добавление элемента и его использование будет практически идентичное:
C++
1
2
3
4
5
Graphics::TBitmap *Bitmap1 = new Graphics::TBitmap();
std::vector <void *> pbitmaps;
pbitmaps.insert(pbitmaps.begin(),Bitmap1);
 
Graphics::TBitmap *Bitmap = static_cast <Graphics::TBitmap *> (pbitmaps.operator [] (0));
Ну и плюс - лишний заголовочный файл...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.04.2012, 00:02

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Массив изображений
Добрый день всем. Прошу привести пример масива изображений ( Bitmap или любой другой ( но не...

Массив изображений
В папке хранятся изображения, необходимо что бы они поочередно передавались функции для обработки....

Массив изображений
доброго времени суток. нужен массив изображений. который я написал - крашится. проблема,...

Массив из изображений
Есть у меня две формы. На первой форме несколько кнопок. На второй форме элемент pictureBox (хочу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.