|
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 426
|
|
Пропорциональное увеличение/уменьшение картинки14.11.2018, 13:55. Показов 3689. Ответов 9
Метки нет (Все метки)
Здравствуйте!
Юзер выбирает картинки с помощью стандартного диалогового окна с мультиселектом. Выбранные картинки грузятся в невидимые пикчербоксы (AutoSize=True), юзер же видит их превьюшки (64х64 пикс) на “ленте”. Надо, чтобы при наведении мышки на превьюшку показывалось увеличенное изображение (источник – оригинальный рисунок со скрытого пикчербокса), но с соблюдением следующих условий: 1. Размер увеличенного изображения ограничен MaxHeight и MaxWidth 2. Если оригинальное изображение меньше MaxHeight и MaxWidth, оно выводится в «натуральном» размере без увеличения/уменьшения 3. Если изображение больше одним из измерений или обоими, то оно уменьшается так, чтобы ни одно из измерений не выходило за рамки заданных MaxHeight и MaxWidth Я как-то вроде сделал это всё процентов на 80 (с использованием BitBlt и StretchBlt), но, во-первых, очень коряво и избыточно-многострочно с кучей Select Case-ов, с определением типа рисунка – квадрат, портрет, ландшафт, а во-вторых и это самое главное – не уверен что логика моего кода учитывает все варианты и не упускает какой нибудь ситуации, когда уменьшили, скажем, Heigt до размера MaxHeight, но ширина всё-таки осталась больше MaxWidth и тому подобное. Может кто-нибудь подскажет правильную схему, логику этого дела? Заранее благодарен откликнувшимся
0
|
|
| 14.11.2018, 13:55 | |
|
Ответы с готовыми решениями:
9
Как сделать пропорциональное увеличение формы во весь экран
|
|
Модератор
|
||||||
| 14.11.2018, 19:52 | ||||||
Сообщение было отмечено giaber как решение
Решение
2
|
||||||
|
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 426
|
||||||
| 15.11.2018, 21:32 [ТС] | ||||||
|
Уважаемый The Trick!
Как всегда ваш код прекрасен и железно работает. Но, тоже как всегда, я никак не могу его нормально понять. Ну вроде ничего сложного, кажется, что логика понятна, но когда пытаюсь встроить его в свою прогу, заменяя ваши названия lsw, lsh, ldx, ldy и тп на свои, просто используя ваш алгоритм - реально не получается, то никак не могу центрировать, то не садится в MaxH и в MaxW, в общем с утра сижу почти не вставая, но так и не добился результата. Как всегда в чём-то сильно туплю. Стыдно, конечно – красивый, но несложный код и такая тупость с моей стороны…. Вот, хочу попросить – может не затруднитесь и сделаете то же самое в варианте, как бы максимально имитирующем условия моей проги. Там просто 2 пикчербокса: picOrigin и picPreview и зона MaxH и MaxW (для наглядности «очерчена»). Рисунок из picOrigin должен стретчится в picPreview с использованием:
0
|
||||||
|
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 426
|
|
| 17.11.2018, 20:45 [ТС] | |
|
Всё получилось! Просто один день не подходил к компу, мозговой спазм прошёл и легко так всё пошло, как по маслу!
Ещё раз СПАСИБО за лаконичный код, The Trick!
0
|
|
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
||
| 25.09.2023, 18:37 | ||
|
0
|
||
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
||||||
| 08.10.2023, 15:33 | ||||||
|
The trick, для получения размера картинки, кстати, я нашёл другой код, более понятный:
1
|
||||||
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|||||||
| 10.10.2023, 10:23 | |||||||
Такой код у меня работает правильно, при растягивании пикчебокса.
0
|
|||||||
|
Модератор
|
||
| 10.10.2023, 20:29 | ||
|
0
|
||
| 10.10.2023, 20:29 | |
|
Помогаю со студенческими работами здесь
10
Пропорциональное уменьшение картинки по двум сторонам Увеличение и уменьшение картинки Увеличение и уменьшение картинки Увеличение/уменьшение картинки Увеличение и уменьшение картинки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
|
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|