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

TImageControl


Камышев Александр

Вопрос

CBuilder XE7, приложение под андроид. 

 

На форме есть несколько TImageControl с загруженными изображениями.

Тестирование показало, на андроид 5.x приложение крашится на запуске, с сообщением "Приложение было остановлено".

До 5.x все отлично работает. Пустой TImageControl приложение такой ошибки не дает, только с изображением. 

 

Кто нибудь знает, что это за беда и какие есть варианты решения?

 

Вот в этом обсуждении http://fire-monkey.ru/topic/159-kak-dobavit-v-svoi-komponent-timage-i-dat-vozmozhnos/?p=569

есть 3 и 4 пункт, что вроде как можно в битмапе хранить изображение.

Уточните, как добавить битмап в published секцию(формы я так понял?), и загрузить свое изображение?

 

 

Добрый день,

 

Если есть исходники FMX, то посмотрите на реализацию контрола FMX.StdCtrls.TImageControl, не стесняйтесь их изучать. Там как раз аналогичная ситуация, есть встроенный TImage, в который загружается пользовательское изображение.

 

Общие правила такие:

  1. Решаем, где будем хранить контейнер для изображения TImage: в стиле или создавать динамически при создании нашего контрола?
  2. Любое изображение нужно где-то хранить, вариант с загрузкой по пути не самый удачный на мой взгляд. Так как пути на разных платформах будут разными, да и возникает необходимость разворачивания файлов изображений вместе с пакетом (Deployment Manager - Включение своих файлов в приложение). Единственный плюс при этом - это экономия на памяти и ускорение запуска программы, за счет отложенной загрузки изображения. Это может стать решающей причиной для хранения изображения по пути к файлу со всеми вытекающими.
  3. Изображение храним в TBitmap, который создается динамически. Доступ к нему открывается в published секции для работы в DesignTime. В этом случае пользователь сможет загрузить свое изображение в дизайн тайме и при этом оно при сохранении формы автоматически сериализуется в ресурсы формы, а в последующем и восстановится.
  4. Осталось настроить загрузку изображения непосредственно в компонент отображения. В нашем случае в TImage. Если TImage создается динамически нашим контролом и не зависит от стиля, то смело грузим картинку из TBitmap в TImage.Bitmap. Если же контейнер загружается из стиля, то грузим картинку в перекрытом методе ApplyStyle, который вызывается, когда стиль загружен для контрола

 

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

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

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

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

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

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

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

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

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

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

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

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