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



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.01.2021, 14:01
Аватар для Помидоркин
Помидоркин Помидоркин вне форума
Новичок
 
Регистрация: 07.10.2012
Адрес: Дедовск
Сообщения: 93
Версия Delphi: Delphi 7 / XE4
Репутация: 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
Сообщения: 7,709
Версия 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
Сообщения: 162
Версия 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'а выставлять смещении, если я не ошибаюсь...
Благодарю!!
Ответить с цитированием
Ответ



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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter   Ссылка на Telegram