• 0
ENERGY

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

Вопросы

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

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

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

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

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

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


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

5 ответов на этот вопрос

  • 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
1 час назад, Равиль Зарипов (ZuBy) сказал:

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

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

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

.

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

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


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

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