IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Масштабирование фигуры с помощью ScrollBar
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 37
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Никак не могу сообразить, как с помощью ScrollBar(а) масштабировать простую фигуру (объект Shape). Точнее сам смысл мне понятен, в пикселях изменить размер получилось, а вот масштаб от заданного размера. . .

Вот неправильная процедура ScrollBar:
procedure TForm1.sbScaleScrollChange(Sender: TObject);
begin
shShape.Width:=sbScaleScroll.Position;
shShape.Height:=sbScaleScroll.Position;
end

Здесь sbScaleScroll - сама полоса прокрутки, а shShape - фигура.
Полоса прокрутки может принимать значения от 1 до 100. Соответственно, при таком коде максимальный размер фигуры - 100х100px.

Помогите, пожалуйста. Хотя тут скорее не в Delphi дело, а в самой формуле.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Ты бы пояснил, что именно неправильного в указанной тобой процедуре.
Т.е. по какому критерию мы можеи отличить неправильный алгоритм от правильного.
Кстати, диапазон изменения полосы прокрутки можно изменять в достаточно широких пределах. 100 - совсем не обязательно.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 37
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Цитата(andriano @ 16.05.2008 17:58) *

Ты бы пояснил, что именно неправильного в указанной тобой процедуре.
Т.е. по какому критерию мы можеи отличить неправильный алгоритм от правильного.
Кстати, диапазон изменения полосы прокрутки можно изменять в достаточно широких пределах. 100 - совсем не обязательно.

Я понимаю, что ставить можно хоть 1000, но 100 - это как бы проценты (101% не бывает, увеличивать не надо).
Допустим есть фигура с длиной 400 и высотой 200 - по умолчанию. Полоса прокрутки на значении 100. Если её сдвинуть влево (в меньшую сторону), фигура должна уменьшиться, как по длине, так и по ширине.
Соответственно, после уменьшения, при сдвиге ползунка вправо фигура увеличивается до своего нормального размера. При этом нет ни конкретных размеров, ни пропорции длина-ширина не известно, то есть работаем с параметрами shShape.Width, shShape.Height, а не конкретными значениями.

Вопрос заключается в том, как в формуле масштаба задействовать shShape.Width, shShape.Height и sbScaleScroll.Position?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


shShape.Width := OriginalWidth*sbScaleScroll.Position div sbScaleScroll.Max;
аналогично высоту.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 37
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Цитата(andriano @ 16.05.2008 20:59) *

shShape.Width := OriginalWidth*sbScaleScroll.Position div sbScaleScroll.Max;
аналогично высоту.

Большое спасибо! Правда Delphi не признал "OriginalWidth", прописал в пикселях - думаю прокатит.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


OriginalWidth - это константа: исходный размер изображения (т.е. 100%).
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 24.11.2020 0:17
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name