Поиск:

Ответ в темуСоздание новой темы Создание опроса
> добавление картинок в ImageList 
V
    Опции темы
Platov
Дата 13.5.2010, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 23.7.2009

Репутация: 2
Всего: 2



Есть набор картинок gif, jpg, png. 
Картинки могут быть разных размеров, но отличаются не намного. 
Как их программно загонять в ImageList?

Вручную при создании проекта всё получается, значит ImageList их понимает.

 smile 
PM MAIL   Вверх
Dem_max
Дата 14.5.2010, 05:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 14
Всего: 39



Что значит вручную ?
Вообще ImageList кроме формата ICO и BMP ничего не понимает больше.
Как ты это умудрился ему подсунуть PNG, GIF, JPG

едиственный вариант скормить такие форматы это преобразовать их к BMP.
допустим чтото типа этого
Код

#include <jpeg.hpp>

Graphics::TBitmap *bmp=new Graphics::TBitmap;
TJPEGImage *jp = new TJPEGImage();
jp->LoadFromFile("C:\\1.jpg");
bmp->Width= jp->Width;
bmp->Height=jp->Height;
bmp->Assign(jp);
ImageList1->Add(bmp, NULL);
 

Это сообщение отредактировал(а) Dem_max - 14.5.2010, 06:00


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
Platov
Дата 14.5.2010, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 23.7.2009

Репутация: 2
Всего: 2



Цитата(Dem_max @  14.5.2010,  05:44 Найти цитируемый пост)
Как ты это умудрился ему подсунуть PNG, GIF, JPG
  smile 

Очень просто! при добавлении через ImageList Editor добавляется всё (gif, bmp, jpg, png). 
Как-то ведь оно работает!
А вот во время работы программы  smile 
PM MAIL   Вверх
Platov
Дата 14.5.2010, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 23.7.2009

Репутация: 2
Всего: 2



Dem_max, спасибо что развеял моё заблуждение что ImageList  умный.

сделал во так:


Код

#include <jpeg.hpp>
#include "GIFimg.hpp"
#include "pngimage.hpp"


//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{

if (OpenDialog1->Execute())
{
TListItem *li;

Graphics::TBitmap *bmp=new Graphics::TBitmap;
TJPEGImage *jp = new TJPEGImage();
TGIFImage *Gif=new TGIFImage;
TPngImage *Png=new TPngImage;

TRect dest=Rect(0,0,190,142);

if (ExtractFileExt(OpenDialog1->FileName).LowerCase()==".jpg")
  {
   jp->LoadFromFile(OpenDialog1->FileName);
   jp->Scale=true;
   bmp->Assign(jp);
  }
else
if (ExtractFileExt(OpenDialog1->FileName).LowerCase()==".png")
  {
   Png->LoadFromFile(OpenDialog1->FileName);
   Png->Canvas->StretchDraw(dest,Png);
   Png->Resize(190,142);
   bmp->Assign(Png);
  }
else
if (ExtractFileExt(OpenDialog1->FileName).LowerCase()==".gif")
  {
   Gif->LoadFromFile(OpenDialog1->FileName);
   Gif->Bitmap->Canvas->StretchDraw(dest,Gif);
   bmp->Assign(Gif);
  }
else
if (ExtractFileExt(OpenDialog1->FileName).LowerCase()==".bmp")
  {
   bmp->LoadFromFile(OpenDialog1->FileName);
   bmp->Canvas->StretchDraw(dest,bmp);
   bmp->Width=dest.Width();
   bmp->Height=dest.Height();
  }





ImageList1->Add(bmp, NULL);


li=ListView1->Items->Add();
li->Caption=OpenDialog1->FileName;
li->ImageIndex=ListView1->Items->Count-1;


delete Png;
delete bmp;
delete jp;
delete Gif;


}



}
//---------------------------------------------------------------------------




Почти всё отлично работает. Кроме кусочка с gif.
Он работает через раз, т.е. загружается картинка всегда только вот в первый раз масштабирование отрабатывает, во второй раз нет, потом опять масштабируется, потом нет и т.д.

Может кто знает из-за чего это.

Это сообщение отредактировал(а) Platov - 14.5.2010, 10:06
PM MAIL   Вверх
Platov
Дата 14.5.2010, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 23.7.2009

Репутация: 2
Всего: 2



 smile 

Код

if (ExtractFileExt(OpenDialog1->FileName).LowerCase()==".gif")
  {
   Gif->LoadFromFile(OpenDialog1->FileName);
   Gif->Bitmap->Canvas->StretchDraw(dest,Gif);
   Gif->Bitmap->Width=190;
   Gif->Bitmap->Height=142;

   bmp->Assign(Gif);
  }


Вот так работает.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0575 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.