Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
29 / 29 / 19
Регистрация: 18.11.2012
Сообщений: 338
Записей в блоге: 1
1

Программа для просмотра графических файлов

08.01.2018, 11:30. Показов 2215. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Необходимо реализовать что-то на подобие Open Dialoga
Программа для просмотра графических файлов
.
Слева дерево каталогов сделал, но сообразить, как отображать миниатюры картинок содержащихся в выделенном каталоге не получается, подскажите плз.
0
08.01.2018, 11:30
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.01.2018, 11:30
Ответы с готовыми решениями:

Разработка программы просмотра графических файлов ._
Доброго времени. Мне задали курсовую работу в программной среде Delphi. В работе необходимо реализовать программу просмотра графических...

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

Программа записи и просмотра графических BMP-файлов
Собственно в названии и вся просьба. Может у кого-нибудь из вас есть готовый проект с исходниками или вы знаете где его взять? Пусть даже...

9
882 / 404 / 173
Регистрация: 20.10.2016
Сообщений: 1,828
08.01.2018, 11:35 2
Все просто: определяем, что файл относится к графическому типу (по расширению), загружаем файл, конвертируем в битмап, уменьшаем размеры до размера миниатюры. Дальше в зависимости от желания: либо пихаем каждый рисунок в свой TImage, либо рисуем эту миниатюру на канву компонента. Память, конечно, это подожрет, но не так, чтобы критично.
0
29 / 29 / 19
Регистрация: 18.11.2012
Сообщений: 338
Записей в блоге: 1
08.01.2018, 11:47  [ТС] 3
Цитата Сообщение от Nanotentacle Посмотреть сообщение
либо пихаем каждый рисунок в свой TImage, либо рисуем эту миниатюру на канву компонента
а на какой компонент это все ложить, чтобы со скролом было и отображалось, как на картинке списком из кучи картинок?
0
882 / 404 / 173
Регистрация: 20.10.2016
Сообщений: 1,828
08.01.2018, 11:54 4
Если память мне не изменяет, подобный функционал был у TListView. Не ручаюсь, но посмотреть в сторону этого компонента стоит. В любом случае, ничего не мешает написать даже самописный компонент на основе TImage, например. Получится не сильно сложно (но, опять же, не сильно хорошо скажется на оперативной памяти).

Добавлено через 4 минуты
А чем TOpenPictureDialog не нравится?
0
29 / 29 / 19
Регистрация: 18.11.2012
Сообщений: 338
Записей в блоге: 1
08.01.2018, 11:58  [ТС] 5
Цитата Сообщение от Nanotentacle Посмотреть сообщение
А чем TOpenPictureDialog не нравится?
мне надо это все на форме показывать без диалогов
0
 Аватар для krapotkin
5885 / 4610 / 1451
Регистрация: 14.04.2014
Сообщений: 20,436
Записей в блоге: 20
08.01.2018, 12:57 6
listview имеет всю нужную функциональность, кроме основной - вы должны сами формировать картинки по файлам
0
29 / 29 / 19
Регистрация: 18.11.2012
Сообщений: 338
Записей в блоге: 1
10.01.2018, 13:02  [ТС] 7
Цитата Сообщение от krapotkin Посмотреть сообщение
вы должны сами формировать картинки по файлам
не получается вставить через imagelist в listview картинку, вставляется только оч маленькая, а если размеры imagelist меняю, то вообще не вставляется.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
var
  map: TBitmap;
  x1, y1, x2, y2: Integer;
  fact1, fact2: Real;
  jpeg_map: TJpegImage;
  sourse_map:TBitmap;  it:TListItem;      il:TImageList;
begin
  jpeg_map := TJpegImage.Create;
  jpeg_map.LoadFromFile('c:\test\gzYRi-M9utg.jpg');
  sourse_map := TBitmap.Create;
  sourse_map.Width := jpeg_map.Width;
  sourse_map.Height := jpeg_map.Height;
  sourse_map.Assign(jpeg_map);
  jpeg_map.Free;
  map := TBitmap.Create;
  // размеры исходного изображения
  x1 := sourse_map.Width;
  y1 := sourse_map.Height;
  //размеры области, в которую помещается изображение
  il:=TImageList.CreateSize(60,60); // с этим не вставляется
  x2 := il.Width;//Self.ClientWidth;
  y2 := il.Height;//Self.ClientHeight;
  // вычисляем отношение размеров
  fact1 := x2 / x1;
  fact2 := y2 / y1;
  // берём наименьший коэффициент, чтобы на него домножить размеры исходного изображения
  If fact2 < fact1 then
    fact1 := fact2;
  // а дальше уже отображение
//  Self.Canvas.Brush.Color := clGray;
//  Self.Canvas.FillRect(Self.Canvas.ClipRect);
  // если картинка больше заданной области, то сжимаем её
  If fact1 < 1.0 then
    begin
      map.Width := Round(x1 * fact1);
      map.Height := Round(y1 * fact1);
      map.Canvas.StretchDraw(map.Canvas.ClipRect, sourse_map);
    end
  else // иначе - оставляем такой, какая она есть (чтобы не расширять)
    map.Assign(sourse_map);
  // отображаем:
//  Self.Canvas.Draw((Self.ClientWidth - map.Width) div 2,
//      (Self.ClientHeight - map.Height) div 2, map);
  ListView1.Clear;
 
  il.Add(map,nil);
//  il.Count;
      ListView1.LargeImages:=il;
      it:=ListView1.Items.Add;
      it.ImageIndex:=il.Count-1;
//  ImageList1.Add(map,nil);
//ListView1.LargeImages:=ImageList1; тут вставляется маленькая картинка
//      it:=ListView1.Items.Add;
//      it.ImageIndex:=ImageList1.Count-1;
 
  map.Free;
0
 Аватар для krapotkin
5885 / 4610 / 1451
Регистрация: 14.04.2014
Сообщений: 20,436
Записей в блоге: 20
10.01.2018, 13:26 8
ImageList содержит картинки одного и того же размера
при изменении размера IL все содержимое очищается
поэтому вам нужно либо хранить несколько ImageList разных размеров, либо массив(список) больших битмапов и каждый раз заполнять IL заново картинками нужного размера, создавая их из больших
0
29 / 29 / 19
Регистрация: 18.11.2012
Сообщений: 338
Записей в блоге: 1
10.01.2018, 13:35  [ТС] 9
Цитата Сообщение от krapotkin Посмотреть сообщение
вам нужно либо хранить несколько ImageList разных размеров, либо массив(список) больших битмапов и каждый раз заполнять IL заново картинками нужного размера, создавая их из больших
я же создаю imagelist
il:=TImageList.CreateSize(60,60)
размером 60на 60, причем таким способом вставляется картинка, но не изменяется рамзер самой картинки
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var
  j:tjpegimage;
  il:TImageList;
  bm, mask: TBitmap;      it:TListItem;
begin
  ImageList1.Clear;
  ListView1.Clear;
  il:=TImageList.CreateSize(60,60);
 
  bm:=TBitmap.Create;
//  Image1.Picture.LoadFromFile('c:\test\z.bmp');
  bm.LoadFromFile('c:\test\z.bmp');
  il.Add(bm,nil);
//  ImageList1.Insert(0, Image1.Picture.Bitmap,nil);
 
      it:=ListView1.Items.Add;
      it.ImageIndex:=il.Count-1;
      ListView1.LargeImages:=il;
//      ImageList1.FileLoad(rtBitmap,'c:\test\1.bmp',clBtnFace);
//      ShowMessage(IntToStr(ImageList1.Count));
//      sImage1.ImageIndex:=1;
и получается, что не вся картинка влазит,а предыдущим методом, форматируется размер картинки толькко под самый мелкий
0
 Аватар для krapotkin
5885 / 4610 / 1451
Регистрация: 14.04.2014
Сообщений: 20,436
Записей в блоге: 20
10.01.2018, 13:49 10
а почему должен изменяться размер картинки-то ?

вообще мой совет - разбейте свою процедуру на более мелкие. все станет в 100 раз понятнее

Delphi
1
2
3
4
ResizeIL(size);
b:=LoadBitmap();
resizeBitmap(b,size);
IL.add(b);
0
10.01.2018, 13:49
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.01.2018, 13:49
Помогаю со студенческими работами здесь

Разработать приложение для просмотра графических файлов
Задача 1. Разработать приложение для просмотра графических файлов

Создать форму для просмотра графических файлов
Создать форму для просмотра графических файлов, используя: (Image, OpenDialog, SaveDialog, Button, Label, Edit). При нажатии на кнопку в...

Написать программу для просмотра графических файлов, расположенных в определенном каталоге
Используя ИСР Delphi, разработать графический интерфейс и написать программу для просмотра графических файлов, расположенных в определенном...

Разработка программы просмотра графических файлов
помогите пожалуйста написать такую програмку,которая просто бы открывала изображения таких форматов - PCX, BMP, GIF, TIFF ,ну и могла...

Программа для вывода на форме графических файлов
Прошу помощи в создании программы для вывода на форме графических файлов. Чтобы при перемещении мыши объект двигался за курсором, а при...


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

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

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Использование кэша Laravel - полный гайд
bytestream 18.02.2025
Кэширование - один из наиболее эффективных способов повышения производительности веб-приложений. В современном мире, где скорость загрузки страниц напрямую влияет на удержание пользователей и. . .
Создаем REST API в Laravel с аутентификацией через Passport
bytestream 18.02.2025
Разработка современных веб-приложений все чаще требует создания надежного и хорошо структурированного API. REST API стал стандартом де-факто для построения взаимодействия между клиентской и серверной. . .
Пайплайны в Laravel - полный гайд
bytestream 18.02.2025
Разработка современных веб-приложений часто требует обработки сложных процессов, состоящих из множества последовательных шагов. Например, при создании системы комментариев может потребоваться. . .
Как правильно использовать @required в Symfony
bytestream 18.02.2025
При разработке приложений на Symfony мы часто сталкиваемся с необходимостью внедрения зависимостей. Фреймворк предоставляет несколько способов управления этим процессом, и одним из таких инструментов. . .
Система безопасности в Laravel: возможности и примеры
Wired 18.02.2025
Каждый день появляются новые виды атак и уязвимостей, которые могут поставить под угрозу конфиденциальные данные пользователей и функционирование всей системы. В этом контексте выбор надежного. . .
Давайте сравним Django и Laravel
Wired 18.02.2025
Django и Laravel - два мощных инструмента, которые часто сравнивают между собой. Оба фреймворка предлагают разработчикам богатый набор возможностей для создания масштабируемых веб-приложений, но. . .
Laravel или React - что лучше?
Wired 18.02.2025
В разработке веб выбор правильного инструмента часто определяет успех всего проекта. Особенно интересным представляется сравнение Laravel и React - двух популярных технологий, которые часто. . .
Laravel 11: новые возможности, гайд по обновлению
Wired 18.02.2025
Laravel 11 - это новая масштабная версия одного из самых популярных PHP-фреймворков, выпущенная в марте 2024 года. Эта версия продолжает традицию внедрения передовых технологий и методологий. . .
Миграции в Laravel
Wired 18.02.2025
Разработка веб-приложений на Laravel неразрывно связана с управлением структурой базы данных. При работе над проектом часто возникает необходимость вносить изменения в схему базы данных - добавлять. . .
Аутентификация в Laravel
Wired 18.02.2025
В современном мире веб-разработки безопасность пользовательских данных становится критически важным аспектом любого приложения. Laravel, как один из самых популярных PHP-фреймворков, предоставляет. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru