Я хочу получить текущий размер изображения, отображаемого с помощью TImage, этот объект имеет свойство Proportional, установленное на True, и выровнен с клиентом с основной формой. Итак, при изменении размера формы я хочу получить текущий размер этого изображения, а не размер холста и не реальный размер этого изображения. Получив текущий размер, я могу показать, каков процент текущего размера изображения по отношению к реальному размеру изображения. заранее спасибо
Как получить текущий размер представления изображения в Delphi 2009
Ответы (3)
Вы можете сравнить Image1.Picture.Width или .Height с Image1.Width или .Height.
Чтобы узнать, пропорционально ли растянуто изображение с использованием горизонтального или вертикального размера, вы должны сравнить соотношение двух:
if Image1.Width/Image1.Height > Image1.Picture.Width/Image1.Picture.Height then
Result:=Image1.Picture.Width/Image1.Width
else
Result:=Image1.Picture.Height/Image1.Height;
используя математический трюк для преобразования делений в умножения, вы можете избежать преобразования в значения с плавающей запятой, которые также вычисляются немного быстрее, используя:
if Image1.Width*Image1.Picture.Height >Image1.Picture.Width*Image1.Height then
Я не думаю, что есть встроенный способ сделать это. Возможно, вам просто нужно рассчитать это. Что-то вроде этого:
- Получите высоту и ширину холста.
- Получите высоту и ширину свойства
Picture
изображения. - Рассчитайте отношение размеров картины к размерам холста.
- Тот из двух коэффициентов, который меньше, и будет вашим процентом.
Загрузите это изображение в виртуальный TCanvas (или что-то еще), а затем оставьте свойство Proportional равным False. Теперь вы можете восстановить исходный размер изображения. Если изображение обычно очень большое, возможно, вам следует использовать некоторые внешние графические библиотеки.