Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.01.2021, 14:01
Аватар для Помидоркин
Помидоркин Помидоркин вне форума
Начинающий
 
Регистрация: 07.10.2012
Адрес: Дедовск
Сообщения: 110
Версия Delphi: Rio 10.3
Репутация: 10
По умолчанию Масштабирование изображения скроллом

Пытаюсь сделать масштабирование как в фотошоп или солидворкс т.е. по FormMouseWheelDown\Up изображение увеличивается\уменьшается, при этом изображение (видимая в окне часть) позиционируется в зависимости от положения курсора.
Вопрос с какого бока подойти к решению, какие компоненты использовать.
Что-то такое набросал, понятно что "шляпа", у меня ощущение что вообще не с той стороны захожу
Код:
procedure TForm2.FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
  MousePos: TPoint; var Handled: Boolean);
begin
 Image1.Picture.Bitmap.SetSize(Image1.Picture.Bitmap.Width+10,
  Image1.Picture.Bitmap.Height+10);
end;

procedure TForm2.FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
  MousePos: TPoint; var Handled: Boolean);
begin
  Image1.Picture.Bitmap.SetSize(Image1.Picture.Bitmap.Width-10,
   Image1.Picture.Bitmap.Height-10);
end;
Ответить с цитированием
  #2  
Старый 20.01.2021, 19:46
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,051
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

На форму кидаем TScrollBox, на него TPicture. При загрузке картинки ставим размер TPicture в размер картинки. TPicture.Stretch = True.
В твокм коде убираем строки 5 и 12 (нам не надо переразмеривать сам битмап, только контейнер, а уж он за счет Stretch отрисует картинку с масштабированием).
Должно работать.
Положение при масштабировании по курсору уж как-нить сам пропишешь, там надо будет просто у ScrollBox'а выставлять смещении, если я не ошибаюсь...
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо lmikle за это полезное сообщение:
olegivanov142 (22.09.2021), Помидоркин (21.01.2021)
  #3  
Старый 20.01.2021, 20:03
Аватар для Guaho
Guaho Guaho вне форума
Начинающий
 
Регистрация: 27.08.2017
Сообщения: 178
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

Смотрите компоненты ImageEn. Там такое есть, и не только.
Ответить с цитированием
Этот пользователь сказал Спасибо Guaho за это полезное сообщение:
Помидоркин (21.01.2021)
  #4  
Старый 22.09.2021, 07:10
olegivanov142 olegivanov142 вне форума
Прохожий
 
Регистрация: 22.09.2021
Сообщения: 1
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
На форму кидаем TScrollBox, на него TPicture. При загрузке картинки ставим размер TPicture в размер картинки. TPicture.Stretch = True.
В твокм коде убираем строки 5 и 12 (нам не надо переразмеривать сам битмап, только контейнер, а уж он за счет Stretch отрисует картинку с масштабированием).
Должно работать.
Положение при масштабировании по курсору уж как-нить сам пропишешь, там надо будет просто у ScrollBox'а выставлять смещении, если я не ошибаюсь...
Благодарю!!
Ответить с цитированием
  #5  
Старый 09.12.2021, 10:56
hromatogra hromatogra вне форума
Прохожий
 
Регистрация: 09.12.2021
Сообщения: 1
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
На форму кидаем TScrollBox, на него TPicture. При загрузке картинки ставим размер TPicture в размер картинки. TPicture.Stretch = True.
В твокм коде убираем строки 5 и 12 (нам не надо переразмеривать сам битмап, только контейнер, а уж он за счет Stretch отрисует картинку с масштабированием).
Должно работать.
Положение при масштабировании по курсору уж как-нить сам пропишешь, там надо будет просто у ScrollBox'а выставлять смещении, если я не ошибаюсь...
Добрый день. Спасибо большое !
Ответить с цитированием
  #6  
Старый 20.01.2022, 18:51
TryHarder TryHarder вне форума
Прохожий
 
Регистрация: 20.01.2022
Сообщения: 1
Версия Delphi: VS
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
На форму кидаем TScrollBox, на него TPicture. При загрузке картинки ставим размер TPicture в размер картинки. TPicture.Stretch = True.
В твокм коде убираем строки 5 и 12 (нам не надо переразмеривать сам битмап, только контейнер, а уж он за счет Stretch отрисует картинку с масштабированием).
Должно работать.
Положение при масштабировании по курсору уж как-нить сам пропишешь, там надо будет просто у ScrollBox'а выставлять смещении, если я не ошибаюсь...
Вроде как и должно работать, но у меня чё то не работает.
Я вместо этого играю в игровые автоматы Супер Слотс на деньги и выигрываю. Умножил банк уже в несколько раз и не собираюсь на этом останавливаться, в планах начать играть в покер, тоже на сайте супер слотс. Всё таки автоматы, автоматами, но иногда хочется и с живыми людьми поиграть в карты.
Ответить с цитированием
  #7  
Старый 21.01.2022, 03:21
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,051
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну, вообще-то, именно так у меня в одной программе и работает.
Что-то ты не так делаешь.
Ответить с цитированием
  #8  
Старый 17.02.2022, 16:36
Аватар для gijog
gijog gijog вне форума
Прохожий
 
Регистрация: 17.02.2022
Сообщения: 2
Версия Delphi: Delphi 9
Репутация: 10
По умолчанию

А в чём ошибка?

Последний раз редактировалось gijog, 17.02.2022 в 16:38.
Ответить с цитированием
  #9  
Старый 18.02.2022, 03:17
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,051
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от gijog
А в чём ошибка?

Ну а я откуда знаю. Полный код то никто не выложил...
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:40.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter