Масштабирование фигуры с помощью ScrollBar |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
Масштабирование фигуры с помощью ScrollBar |
Psychologist |
16.05.2008 14:27
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 37 Пол: Мужской Реальное имя: Евгений Репутация: 0 |
Никак не могу сообразить, как с помощью ScrollBar(а) масштабировать простую фигуру (объект Shape). Точнее сам смысл мне понятен, в пикселях изменить размер получилось, а вот масштаб от заданного размера. . .
Вот неправильная процедура ScrollBar: procedure TForm1.sbScaleScrollChange(Sender: TObject); Здесь sbScaleScroll - сама полоса прокрутки, а shShape - фигура. Полоса прокрутки может принимать значения от 1 до 100. Соответственно, при таком коде максимальный размер фигуры - 100х100px. Помогите, пожалуйста. Хотя тут скорее не в Delphi дело, а в самой формуле. |
andriano |
16.05.2008 16:58
Сообщение
#2
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
Ты бы пояснил, что именно неправильного в указанной тобой процедуре.
Т.е. по какому критерию мы можеи отличить неправильный алгоритм от правильного. Кстати, диапазон изменения полосы прокрутки можно изменять в достаточно широких пределах. 100 - совсем не обязательно. |
Psychologist |
16.05.2008 18:07
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 37 Пол: Мужской Реальное имя: Евгений Репутация: 0 |
Ты бы пояснил, что именно неправильного в указанной тобой процедуре. Т.е. по какому критерию мы можеи отличить неправильный алгоритм от правильного. Кстати, диапазон изменения полосы прокрутки можно изменять в достаточно широких пределах. 100 - совсем не обязательно. Я понимаю, что ставить можно хоть 1000, но 100 - это как бы проценты (101% не бывает, увеличивать не надо). Допустим есть фигура с длиной 400 и высотой 200 - по умолчанию. Полоса прокрутки на значении 100. Если её сдвинуть влево (в меньшую сторону), фигура должна уменьшиться, как по длине, так и по ширине. Соответственно, после уменьшения, при сдвиге ползунка вправо фигура увеличивается до своего нормального размера. При этом нет ни конкретных размеров, ни пропорции длина-ширина не известно, то есть работаем с параметрами shShape.Width, shShape.Height, а не конкретными значениями. Вопрос заключается в том, как в формуле масштаба задействовать shShape.Width, shShape.Height и sbScaleScroll.Position? |
andriano |
16.05.2008 19:59
Сообщение
#4
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
shShape.Width := OriginalWidth*sbScaleScroll.Position div sbScaleScroll.Max;
аналогично высоту. |
Psychologist |
16.05.2008 20:17
Сообщение
#5
|
Новичок Группа: Пользователи Сообщений: 37 Пол: Мужской Реальное имя: Евгений Репутация: 0 |
|
andriano |
17.05.2008 11:03
Сообщение
#6
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
OriginalWidth - это константа: исходный размер изображения (т.е. 100%).
|
Текстовая версия | 25.05.2024 16:04 |