Перейти к содержанию
Fire Monkey от А до Я
  • 0

Как программно отмасштабировать TImage


sulion

Вопрос

Здравствуйте!

 

Очень нравится FireMonkey, спасибо за отличный продукт.

 

Помогите пожалуйста вот с каким моментом: как программно поменять размер изображения TImage ?

 

...

Character.Bitmap.LoadFromFile( i.m[ be, bi ].g ); {спрайтик}

Character.Position.X := ( Hall.Width - Character.Width ) / 2; {стоим посредине}

Character.Position.Y := ( Hall.Height - Character.Height); {стоим на полу}

Character.Width := PC.Width * PC.Scale;

Character.Height := PC.Height * PC.Scale;

...

 

Проблема: вместо того чтобы отведав пирожка расти стоя на полу, персонаж не меняется в размере.

 

Это - кусочек кода, который по таймеру 10 раз в секунду отрисовывает персонажа. Топорно, без всяких оптимизаций (моя первая проба после TAnimationXXX). Вообще, скорость FireMonkey впечатляет - спрайт ростом с 3/4 экрана с лёгкостью меняется без морганий на очень слабом компьютере, и тики с относительно "тяжёлой" математикой не "наползают" друг на друга по времени.

 

Объект PC - это персонаж, там хранятся вещмешок, умения, способности и пара полей для графики (масштаб PC.Scale и размеры в метрах PC.Height, PC.Width ).

Форма запускается в полноэкранном режиме, на ней лежит TScaledLayout растянутый Align=Client на весь экран, внутри него - фоновый рисунок Hall, персонаж Character и класс-библиотека спрайтов, имена файлов рисунков доступны как i.m[].g

Изменено пользователем sulion
Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Если попроще, то я бы сделал так:

- один TListBox (с выравниванием либо Bottom, либо Client)

- с нужным количеством TListBixItem, соответственно кол-ву "фигур"

- у TListBox Columns = кол-ву TListBixItem, либо ListStyle = Horizontal

- ну и соответственно все настройки по высоте и т.п.

- TListBox.StyleLookup = 'transparentlistboxstyle'

- поместил бы в каждый TListBixItem по картинке (TImage) с выравниванием Bottom

и менял бы высоту этих картинок.......

 

З.Ы. Если Вам не нужно что-то более "красивое"

 

З.З.Ы. А можно сделать свой дополнительный стиль для TListBixItem, взяв за основу стандартный стиль и изменив в нем объект 'icon'. Тогда не нужен будет TImage для каждого TListBixItem, и можно будет управлять им через StylesData['icon.....']...

Изменено пользователем AlexG
Ссылка на комментарий
  • 0

я делал галерею полностью из layout + scrollbox для timage, заключенных в эти layouts

и в той же программе просто масштабируемый вывод нескольких слоев картинки в панель

во втором случае мне кажется использование TImage не нужно

Ссылка на комментарий
  • 0

Вопрос решился парой кликов мышкой: всего-то нужно быть переставить WrapMode у TImage в положение Stretch - подсмотрел в другой тебе на форуме.

 

Всем спасибо! Очень тронут вниманием, накинутые идеи обязательно запомню и попробую.

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...