Перейти к содержанию
  • Регистрация
  • 0
ENERGY

Как сделать аналог Autosize в TImage

Вопрос

Есть картинка-шапка (лого). Wrap Mode = Fit.

При изменении размера формы (ширины), меняется размер картинки внутри Timage, но не меняется размер самого TImage.

Из за этого неправильно позиционируются контролы под Timage (точнее они не меняют позицию), к примеру при уменьшении ширины  формы остаются большие пустые куски, из за того что картинка уменьшилась, а сам Timage  нет (он должен сменить Height самого конторола пропорционально его Width ), и контролы что под ним (c Align Top), не сменили позицию.

В VCL был Autosize у Timage, есть ли что то подобное у FMX ?

Изменено пользователем ENRGY

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

  • 1

как то так наверное

AutoSizeImage.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
В 4/19/2017 в 15:31, Равиль Зарипов (ZuBy) сказал:

Равиль огромное вам спасибо, так просто. Все работает. Обычная пропорция.

Я думал сложнее (я делал  Image1.Height := Image1.Bitmap.Height; ). И заодно решилась проблема, когда увеличиваешь размер формы, картинка корректно увеличивается с Fit. 

Вот правильный код, который посоветовал Равиль:

 

procedure TfrmSplash.FormResize(Sender: TObject);
var
  vKoef: Single;
begin
  if Handle = nil then exit; // on Android without this user will get Access Violation
  vKoef := Image1.Width / Image1.Bitmap.Width;
  Image1.Height := Image1.Bitmap.Height * vKoef;
end

 

Изменено пользователем ENRGY

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

На Android без вот этого кусочка программа молча вылетает (Segmentation Failed)

 if Handle = nil then exit; 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
1 час назад, Равиль Зарипов (ZuBy) сказал:

там есть TBitmap.HandleAllocated, его нужно использовать

нет, тут речь идет про Handle формы (хотя я не пойму причем тут Handle формы под Android, это же фишка Windows). Почему то сначала он <> nil, затем при втором срабатывании onResize Handle = Nil , и где то  в дебрях в результате получается  AV после присваивания Image1.Height .

Причем это новый проект.

.

Изменено пользователем ENRGY

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

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

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


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

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