Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Добавление в ImageList из MemoryStream


Автор: Диас 7.5.2007, 07:16
Здравствуйте! Возможно ли добавить картинку в ImageList из MemoryStream?

Автор: Alexeis 7.5.2007, 10:26
Код

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;

Автор: Диас 8.5.2007, 09:14
Благодарю!  smile 

Автор: Rennigth 8.5.2007, 10:54
Alexeis, а mem освобождать?...  smile  smile 

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

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

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

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

Автор: Диас 8.5.2007, 12:09
А как сделать чтоб при добавлении он не разбивал картинку на много, а уменьшал/растягивал как в дезаин-тайме в редакторе ImageList'a Stretch? 

Автор: Alexeis 8.5.2007, 12:55
Код

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;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)