Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
2 / 3 / 1
Регистрация: 17.12.2015
Сообщений: 168
Delphi 6-7

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

19.06.2019, 07:23. Показов 2235. Ответов 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,495
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,495
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
Ответ Создать тему
Новые блоги и статьи
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru