Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

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


Шустрый
*


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

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



Здравствуйте! Возможно ли добавить картинку в ImageList из MemoryStream?
PM MAIL   Вверх
Alexeis
Дата 7.5.2007, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Код

procedure TForm1.Button1Click(Sender: TObject);
var
  mem : TMemoryStream;
  t   : Tbitmap;
begin
  mem := TMemoryStream.Create;
  mem.LoadFromFile('D:\Scan0001.bmp');
  t   := Tbitmap.Create;
  t.LoadFromStream(mem);
  ImageList1.Add(t, nil);
  t.Free;
  ImageList1.Draw(canvas, 10, 10, 0);
end;



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Диас
Дата 8.5.2007, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Благодарю!  smile 
PM MAIL   Вверх
Rennigth
Дата 8.5.2007, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

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



Alexeis, а mem освобождать?...  smile  smile 


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Alexeis
Дата 8.5.2007, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Rennigth, а кто сказал, что я ее должен выделять? Тут я выделял для того чтобы проверить, в реальном же коде только t   : Tbitmap; будет временным объектом, я его создал и удалил, а за память mem отвечает создатель  smile 
 Обе строчки 
Код

  mem := TMemoryStream.Create;
  mem.LoadFromFile('D:\Scan0001.bmp');

  не имеют отношения к вопросу.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Rennigth
Дата 8.5.2007, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

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



Alexeis, да понятно все  smile Просто заметил, а глазу неприяно  smile Пример то полный привел begin end все дела, создал, а не прибил.  smile 


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Диас
Дата 8.5.2007, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А как сделать чтоб при добавлении он не разбивал картинку на много, а уменьшал/растягивал как в дезаин-тайме в редакторе ImageList'a Stretch? 
PM MAIL   Вверх
Alexeis
Дата 8.5.2007, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Код

procedure TForm1.Button1Click(Sender: TObject);
var
  mem   : TMemoryStream;
  t, t2 : Tbitmap;
begin
  mem := TMemoryStream.Create;
  mem.LoadFromFile('D:\Scan0001.bmp');
  //------------------------
  t   := Tbitmap.Create;
  t.LoadFromStream(mem);
  t2  := Tbitmap.Create;     //еще один временный битмап
  t2.Width  := ImageList1.Width; //устанавливаем ширину как у ImageList
  t2.Height := ImageList1.Width;
  t2.Canvas.StretchDraw(Rect(0, 0, t2.Width-1, t2.Height-1), t); //копируем нужного размера
  ImageList1.Add(t2, nil);
  t.Free;
  t2.Free;
  ImageList1.Draw(canvas, 10, 10, 0);
  //------------------------
  mem.Free;
end;



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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