Как получить текущий размер представления изображения в Delphi 2009

Я хочу получить текущий размер изображения, отображаемого с помощью TImage, этот объект имеет свойство Proportional, установленное на True, и выровнен с клиентом с основной формой. Итак, при изменении размера формы я хочу получить текущий размер этого изображения, а не размер холста и не реальный размер этого изображения. Получив текущий размер, я могу показать, каков процент текущего размера изображения по отношению к реальному размеру изображения. заранее спасибо


person Community    schedule 11.08.2009    source источник


Ответы (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
person Stijn Sanders    schedule 12.08.2009

Я не думаю, что есть встроенный способ сделать это. Возможно, вам просто нужно рассчитать это. Что-то вроде этого:

  1. Получите высоту и ширину холста.
  2. Получите высоту и ширину свойства Picture изображения.
  3. Рассчитайте отношение размеров картины к размерам холста.
  4. Тот из двух коэффициентов, который меньше, и будет вашим процентом.
person Mason Wheeler    schedule 11.08.2009
comment
Черт! Я был в трех нажатиях клавиш и в одном клике от публикации того же ответа! Ты слишком быстр, Мейсон. <грамм> - person Ken White; 11.08.2009

Загрузите это изображение в виртуальный TCanvas (или что-то еще), а затем оставьте свойство Proportional равным False. Теперь вы можете восстановить исходный размер изображения. Если изображение обычно очень большое, возможно, вам следует использовать некоторые внешние графические библиотеки.

person stanleyxu2005    schedule 12.08.2009