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

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

Ответы [ 3 ]

4 голосов
/ 11 августа 2009

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

  1. Получите высоту и ширину холста.
  2. Получите высоту и ширину свойства Picture изображения.
  3. Рассчитайте отношения размеров Картинки к размерам холста.
  4. Какой из двух коэффициентов меньше, это ваш процент.
1 голос
/ 12 августа 2009

Вы можете сравнить 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
0 голосов
/ 12 августа 2009

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

...