2 / 3 / 1
Регистрация: 17.12.2015
Сообщений: 168
Delphi 6-7

Как отобразить габаритный рисунок?

19.06.2019, 07:23. Показов 2287. Ответов 45
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хочу попросить совета как можно организовать отображение габаритного рисунка перед пользователем.

На форме есть несколько TImage, которые в стыке с друг другом и наложением пользователю представляются единым изображением. Самый крайний правый TImage динамичен и в зависимости от опред-ых условий может смещаться. И вот смещаться он может далеко вправо. Соответственно, основная форма при этом будет нефигово так расширяться, чего очень не хочется.

На ум приходит масштабировать конечное изображение, а потом по клику выводить полное изо в отдельной форме. Но проблема в том, что каким образом заскринить получившуюся солянку (все TImage), не отображая её перед пользователем предварительно (пусть хоть и не надолго)?
Ещё есть вариант заюзать ScrollBox, но как туда всю солянку без того же скриншота я без понятия как запихнуть.

Что тут можно придумать?

Пызы. Delphi 7.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.06.2019, 07:23
Ответы с готовыми решениями:

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

Как отобразить в ячейке рисунок WPF
Как отобразить рисунок в ячейке DataGrid .. Пробовал писать код, //Элемент для DataGrid public class MyDataGridItem { ...

Как с BufferedImage открыть рисунок и отобразить на JFrame
прочитать рисунок могу, а отобразить на JFrame или на панели не получается, JLabel не подходит.

45
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,684
Записей в блоге: 21
19.06.2019, 13:28
Студворк — интернет-сервис помощи студентам
все пришло уже в состояние, когда без ТЗ дальше делать нечего
0
 Аватар для GoodWeather
886 / 588 / 179
Регистрация: 28.02.2017
Сообщений: 2,359
Записей в блоге: 1
19.06.2019, 14:27
Если ещё и именно TLabel дорисовывать, то уже прощще PrintTo() PaintTo()...
Ибо чтоб учесть все текущие характеристики каждого экземпляра... Типа стиль, размер, цвет...
1
2 / 3 / 1
Регистрация: 17.12.2015
Сообщений: 168
19.06.2019, 15:44  [ТС]
Цитата Сообщение от krapotkin Посмотреть сообщение
все пришло уже в состояние, когда без ТЗ дальше делать нечего
Да ТЗ то же самое: отобразить в TImage несколько png с сохранением прозрачности.

В инете есть примеры с GDI+, но там в итоге единый файл не отображается на форме, а просто сохраняется.
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,684
Записей в блоге: 21
19.06.2019, 16:00
издеваетесь?
если уж вы смогли сделать битмап чтоб сохранить его, то уж вывести его на экран ну по-любому можно
0
2 / 3 / 1
Регистрация: 17.12.2015
Сообщений: 168
19.06.2019, 16:20  [ТС]
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
var
  Bckgrnd: TGdipGraphic;
  Img1: TGdipGraphic;
  Img2: TGdipGraphic;
  bmap : TBitmap;
 
begin
  Bckgrnd:=TGdipGraphic.Create;
  Img1:=TGdipGraphic.Create;
  Img2:=TGdipGraphic.Create;
  bmap:=TBitmap.Create;
 
  Bckgrnd.LoadFromResource('Sch21b');
  Img1.LoadFromResource('Sch211');
  Img2.LoadFromResource('Sch212');
 
  bmap.Width := 480;
  bmap.Height := 292;
  bmap.Canvas.FillRect(Rect(0, 0, bmap.Width , bmap.Height));
  bmap.Canvas.Draw(0, 0, Bckgrnd);
  bmap.Canvas.Draw(0, 0, Img1);
  bmap.Canvas.Draw(300, 0, Img2);
 
  //Label1.PainTo( // none such method
  Image1.Picture.Graphic:=nil;
  Image1.Picture.Assign(bmap);
 
  Bckgrnd.Free;
  Img1.Free;
  Img2.Free;
  bmap.Free;
В общем, вот накладывания png-шек... С Label думал сделать так:
Цитата Сообщение от GoodWeather Посмотреть сообщение
Если ещё и именно TLabel дорисовывать, то уже прощще PaintTo()
А оказалось, что именно у TLabel такого метода нема

Добавлено через 8 минут
Или я что-то не так опять делаю? В общем, хочу срисовать label на формируемый tbitmap. Выше был вариант вывода текста, но как заметили:
Цитата Сообщение от GoodWeather Посмотреть сообщение
чтоб учесть все текущие характеристики каждого экземпляра... Типа стиль, размер, цвет...
0
 Аватар для Пытливый
3764 / 2272 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
19.06.2019, 16:34
Чуть ранее вам писали, что вместо Label надо использовать bmap.Canvas.TextOut(20, 10, 'Some text');
0
2 / 3 / 1
Регистрация: 17.12.2015
Сообщений: 168
19.06.2019, 17:54  [ТС]
Пытливый,
Цитата Сообщение от Пытливый Посмотреть сообщение
вместо Label надо использовать bmap.Canvas.TextOut(20, 10, 'Some text');
Цитата Сообщение от UnityMan Посмотреть сообщение
Выше был вариант вывода текста, но как заметили:
Цитата Сообщение от GoodWeather Посмотреть сообщение
чтоб учесть все текущие характеристики каждого экземпляра... Типа стиль, размер, цвет...
Хотя вроде как можно там и стиль задать и прочее.
0
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,496
19.06.2019, 20:20
Цитата Сообщение от UnityMan Посмотреть сообщение
Хотя вроде как можно там и стиль задать и прочее.
Можно. А что там, несколько параметров всего, скорее всего, цвет и размер шрифта.

Добавлено через 29 минут
Цитата Сообщение от UnityMan Посмотреть сообщение
прощще PaintTo()
А оказалось, что именно у TLabel такого метода нема
Не именно у TLabel. PaintTo есть у наследников TWinControl, к которым относятся формы, кнопки и прочее, а Label, Image и т.д. наследники TGraphicControl, у которого нет PaintTo.
0
2 / 3 / 1
Регистрация: 17.12.2015
Сообщений: 168
19.06.2019, 20:33  [ТС]
Мужики, верю, что надоел, но помогите плиз добить задачу. Я в TImage вывожу всю мою солянку но в виде миниатюры (у TImage. стоит Stretched). Теперь хочу, чтобы при клике на миниатюру изображение открывалось полностью, но при этом чтобы выходило за пределы текущей формы и поверх нее, т.к. изображение в форму не умещается - такое реально?
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,684
Записей в блоге: 21
19.06.2019, 20:36
изменяя Left Top Width Height у TImage программно...
0
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,496
19.06.2019, 21:09
Цитата Сообщение от UnityMan Посмотреть сообщение
но при этом чтобы выходило за пределы текущей формы и поверх нее,
Разве что выводить это дело на отдельную форму, на которой сидит один Image.
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,684
Записей в блоге: 21
19.06.2019, 22:01
ну положить в scrollbox

Добавлено через 52 секунды
но правильное решение ессно - рисовать самостоятельно с нужным масштабом ровно ту часть что нужна
0
2 / 3 / 1
Регистрация: 17.12.2015
Сообщений: 168
19.06.2019, 23:45  [ТС]
krapotkin,
Цитата Сообщение от krapotkin Посмотреть сообщение
изменяя Left Top Width Height у TImage программно...
Не, верхний левый угол изображения не должен меняться.
Цитата Сообщение от krapotkin Посмотреть сообщение
положить в scrollbox
Не показывает полностью изо в конкретный момент времени.

AzAtom,
Цитата Сообщение от AzAtom Посмотреть сообщение
Разве что выводить это дело на отдельную форму, на которой сидит один Image.
Это понятно, но хочется обойтись текущей формой.

В общем, вот примерно то, что я хочу получить:
Миниатюры
Как отобразить габаритный рисунок?  
0
2 / 3 / 1
Регистрация: 17.12.2015
Сообщений: 168
20.06.2019, 00:22  [ТС]
Нашел в инете следующий совет по этому поводу:
Отрисуй форму с помощью регионов, потом, когда нужно будет выпихнуть изображение за форму - накладывай дополнительный регион туда
Добавлено через 22 минуты
Только не пойму есть ли при этом необходимость отрисовывать саму форму с помощью регионов?
0
 Аватар для GoodWeather
886 / 588 / 179
Регистрация: 28.02.2017
Сообщений: 2,359
Записей в блоге: 1
20.06.2019, 01:28
Цитата Сообщение от UnityMan Посмотреть сообщение
В общем, вот примерно то, что я хочу получить:
Две формы. При нажатии на картинку - по абсолютным координатам картинки открывается всплывающая форма с авторазмером и туда передаётся нужное изображение. При потере фокуса закрывается. Аки всплывающая подсказка.
1
2 / 3 / 1
Регистрация: 17.12.2015
Сообщений: 168
20.06.2019, 07:17  [ТС]
GoodWeather, абсолютные координаты- это типа координаты не относительно формы-родителя, а по экрану?
0
 Аватар для GoodWeather
886 / 588 / 179
Регистрация: 28.02.2017
Сообщений: 2,359
Записей в блоге: 1
20.06.2019, 08:00
Image1.ClientToScreen(Point(0, 0)) или Image1.ClientOrigin.
1
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,684
Записей в блоге: 21
20.06.2019, 08:40
я собсно поэтому и говорил про ТЗ. никто не понимает, что конкретно вам нужно
посмотрел картинки
как вы себе представляете компонент, лежащий на форме, но вылезающий за пределы формы???
ессно, в таком случае вам нужна другая форма, в которую будет встроен ваш Image и которая вместе с ним будет расти куда бы вам ни захотелось...
0
882 / 404 / 173
Регистрация: 20.10.2016
Сообщений: 1,828
20.06.2019, 10:21
Цитата Сообщение от krapotkin Посмотреть сообщение
ессно, в таком случае вам нужна другая форма, в которую будет встроен ваш Image и которая вместе с ним будет расти куда бы вам ни захотелось...
Возможно, с BorderStyle = bsNone
1
2 / 3 / 1
Регистрация: 17.12.2015
Сообщений: 168
20.06.2019, 11:43  [ТС]
krapotkin,
Цитата Сообщение от krapotkin Посмотреть сообщение
я собсно поэтому и говорил про ТЗ. никто не понимает, что конкретно вам нужно
Собственно, остальные участники меня понимают и дают дельные советы, за что им огромная благодарность.
Цитата Сообщение от krapotkin Посмотреть сообщение
как вы себе представляете компонент, лежащий на форме, но вылезающий за пределы формы???
Представляю легко: через регионы. Но как реализовывать не знаю, поэтому выход такой:
Цитата Сообщение от GoodWeather Посмотреть сообщение
При нажатии на картинку - по абсолютным координатам картинки открывается всплывающая форма с авторазмером и туда передаётся нужное изображение. При потере фокуса закрывается. Аки всплывающая подсказка.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.06.2019, 11:43

Как на форме отобразить рисунок, находящий в интернете?
Подскажите, пожалуйста, как на форме отображать рисунки, находящиеся в интернете? Рисунок должен быть связанным, а не динамическим. Хочу...

отобразить рисунок
Привет всем!!! Господа, простите за тупой вопрос. Я вот в винформс пишу тупую игру там должны появляться объекты и в них нужно типа...

Отобразить рисунок с помощью Html
Подскажите пожалуйста как сделать что бы рисунок отображался. Делаю так: <HTML> <HEAD></HEAD> <BODY> ...

Отобразить рисунок media файла
Всем привет, пишу плеер и столкнулся с проблемой, не могу понять, как мне mp3file.Tag.Pictures вывести в Image <Image...

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


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

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

Новые блоги и статьи
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru