Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2007, 17:36   #1
Artem
Пользователь
 
Регистрация: 08.07.2007
Сообщений: 76
По умолчанию Вывод на экран сразу несколько картинок

Всем привет, у меня есть массив, содержащий пути к картинкам, мне нужно вывести на форму сразу все эти картинки в уменьшенном варианте, типа как превью!!! Подскажите, как это сделать...
Только начал изучать Delphi...
Artem вне форума Ответить с цитированием
Старый 12.12.2007, 17:41   #2
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Решение "в лоб" - кинуть на форму TScrollBox и понасоздовать в нём динамически TImage для каждой картинки. Памяти наверно скушает немеряно
Или, если миниатюры не должны ни на что реагировать, достаточно будет одного TImage, куда они и будут выводится, например с помощью CopyRect

М.б. также подойдёт TListView.
пыщь

Последний раз редактировалось JTG; 12.12.2007 в 17:44.
JTG вне форума Ответить с цитированием
Старый 12.12.2007, 17:48   #3
Artem
Пользователь
 
Регистрация: 08.07.2007
Сообщений: 76
По умолчанию

А как динамически создавать? Примерчик можно пожалуйста!
Только начал изучать Delphi...
Artem вне форума Ответить с цитированием
Старый 12.12.2007, 19:41   #4
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Как-то приблизительно так
Код:
var img:array of TImage;
...
SetLength(img, total_images);

for i:=0 to total_images-1 do
begin
  img[i] := TImage.Create(Self);
  img[i].left := 128*i;
  img[i].top := 128*i;
  img[i].right := 128*i+128;
  img[i].bottom := 128*i+128;
...
  img[i].picture.bitmap.canvas.CopyRect([не помню параметры :)]);
...
По завершении программы - img.free.
Короче обьявить массив (динамический опять же), и в цикле для каждого большого рисунка создавать новую миниатюру-TImage и копировать в него содержимое каждого рисунка (или весь загружать, установив свойство Strech=true).

Не, надо всё-таки придумать что-то пооптимальнее
пыщь
JTG вне форума Ответить с цитированием
Старый 12.12.2007, 20:08   #5
MAKEDON
The First Person!
Форумчанин
 
Аватар для MAKEDON
 
Регистрация: 07.08.2007
Сообщений: 228
По умолчанию

Короче обьясняю! Создаешь объект Panel. С помощью свойства Anchor настрой его так, чтобы он заполнял всю форму и изменялся вместе с ней(в размерах). Вот код, работать будем со свойством Paint.
procedure TWinForm31.Panel1_Paint(sender: System. Object;
e: System.windows.Forms.PaintEventArgs );

const
GRExts : String = 'bmp jpg gif png'; \\Поддерфиваемые форматы
var
Files : array of String;
NewImg : Image;
i : Integer;
Ext : String;
begin
Files:= System.IO.Directory.GetFiles('ГДЕ ЛЕЖАТ КАРТИНКИ')
For i := 0 to Length(Files) - 1 do
begin
Ext := Files[i].substring(Length (Files[i]) - 2;
If GrExts.IndexOf (Ext) > 0 then
begin
NewImg := Image.FormFile (Files[i]) .GetThumbnailImage(100,100,nil,nil) ;
e.Graphics.DrawImage (NewImg, Point.Create((i mod 5) *150,(i div 5) *120));
NewImg.Free;
end;
end;
end;
УДАЧИ!!!
Программа обычно делает то что вы ей сказали сделать, а не то что бы вы хотели, чтобы она сделала.
MAKEDON вне форума Ответить с цитированием
Старый 12.12.2007, 20:16   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Гениально!
И, заметьте, это вам с апломбом объясняет человек, который в соседнем посте спрашивает, как вывести на форму картинку по нажатию баттона...
mihali4 вне форума Ответить с цитированием
Старый 13.12.2007, 00:21   #7
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Цитата:
Anchor
....Align ?
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вывод на экран Nikolai_90 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 11 02.05.2012 09:25
сделать интерактивный тест чтоб по локальной сети его проходили сразу несколько человек CheGuevera БД в Delphi 4 10.06.2008 19:21
Вывод на 2-ой экран DShiller Общие вопросы Delphi 0 26.05.2008 15:25
Вывод картинок в уменьшеном виде nikleb PHP 3 17.03.2008 00:20