Вольдемар Опубликовано 31 октября, 2017 Поделиться Опубликовано 31 октября, 2017 Подскажите плиз, как сделать картинку для TSpeedButton или TButton? Цитата Ссылка на комментарий
0 valdemar Опубликовано 31 октября, 2017 Поделиться Опубликовано 31 октября, 2017 кидаешь на форму ImageList1, в неё загружаешь картинку, в TButton в images выбираешь ImageList1 и ставишь индекс картинки. Цитата Ссылка на комментарий
0 Вольдемар Опубликовано 31 октября, 2017 Автор Поделиться Опубликовано 31 октября, 2017 4 часа назад, valdemar сказал: кидаешь на форму ImageList1, в неё загружаешь картинку, в TButton в images выбираешь ImageList1 и ставишь индекс картинки. Странно ведет себя ImageList. Он заточен под размер 16 на 16 ? Цитата Ссылка на комментарий
0 #WAMACO Опубликовано 31 октября, 2017 Поделиться Опубликовано 31 октября, 2017 valdemar и Вольдемар :)) совпадение? Цитата Ссылка на комментарий
0 valdemar Опубликовано 1 ноября, 2017 Поделиться Опубликовано 1 ноября, 2017 10 часов назад, wamaco сказал: valdemar и Вольдемар :)) совпадение? Не думаю. 16 часов назад, Вольдемар сказал: Странно ведет себя ImageList. Он заточен под размер 16 на 16 ? Да, действительно, только 16х16. Тогда советую использовать ImageControl1 вместо кнопки, чтобы была полноразмерная картинка. Вольдемар 1 Цитата Ссылка на комментарий
0 Rusland Опубликовано 1 ноября, 2017 Поделиться Опубликовано 1 ноября, 2017 в ImageList размер может быть любой Цитата Ссылка на комментарий
0 RoschinSpb Опубликовано 1 ноября, 2017 Поделиться Опубликовано 1 ноября, 2017 55 минут назад, valdemar сказал: Да, действительно, только 16х16. Тогда советую использовать ImageControl1 вместо кнопки, чтобы была полноразмерная картинка. Цитата Ссылка на комментарий
0 valdemar Опубликовано 1 ноября, 2017 Поделиться Опубликовано 1 ноября, 2017 (изменено) 2 часа назад, Rusland сказал: в ImageList размер может быть любой Там да, а на кнопке отображается 16х16 при любом размере загруженной картинки. Ну или можно использовать стили, и забыть image - как пережиток VCL Изменено 1 ноября, 2017 пользователем valdemar Вольдемар 1 Цитата Ссылка на комментарий
0 Вольдемар Опубликовано 1 ноября, 2017 Автор Поделиться Опубликовано 1 ноября, 2017 6 часов назад, valdemar сказал: Там да, а на кнопке отображается 16х16 при любом размере загруженной картинки. вот -вот Цитата Ссылка на комментарий
0 RoschinSpb Опубликовано 8 ноября, 2017 Поделиться Опубликовано 8 ноября, 2017 (изменено) В 01.11.2017 в 15:50, Вольдемар сказал: вот -вот Вольдемар + valdemar Компонент TImageList - один из самых задокументированных компонентов FM, также имеется демонстрационное приложение входящее в поставку Delphi, кроме того есть две статьи на русском языке про TImageList и видео с примерами работы, не говоря уже об обсуждениях на этом сайте... к чему это я? А... вот вспомнил, это я к тому, что если вы не смогли найти подходящей информации по теме, то это хороший повод задуматься о своём месте в мироздании. Кажется, программирование это не ваше призвание. Возможно в качестве кондуктора, или дворника вы бы принесли гораздо больше пользы человечеству. Спасибо за понимание. Изменено 8 ноября, 2017 пользователем RoschinSpb Цитата Ссылка на комментарий
0 Tumaso Опубликовано 8 ноября, 2017 Поделиться Опубликовано 8 ноября, 2017 2 часа назад, RoschinSpb сказал: Вольдемар + valdemar Компонент TImageList - один из самых задокументированных компонентов FM, также имеется демонстрационное приложение входящее в поставку Delphi, кроме того есть две статьи на русском языке про TImageList и видео с примерами работы, не говоря уже об обсуждениях на этом сайте... к чему это я? А... вот вспомнил, это я к тому, что если вы не смогли найти подходящей информации по теме, то это хороший повод задуматься о своём месте в мироздании. Кажется, программирование это не ваше призвание. Возможно в качестве кондуктора, или дворника вы бы принесли гораздо больше пользы человечеству. Спасибо за понимание. Функционал TImageList конечно хорош, но совершенно невозможно становится работать, когда в TImageList в designtime загружено например 50 Мб изображений и больше. IDE просто начинает вставать, например просто выделение любого компонента на экране может длится 5 секунд (и это на весьма и весьма хорошем компе), в папке __history общий размер версий файла формы начинает измеряться в гигабайтах. Цитата Ссылка на комментарий
0 krapotkin Опубликовано 8 ноября, 2017 Поделиться Опубликовано 8 ноября, 2017 неясно, в чем проблема-то ImageList виноват, что вы запихали 50 мб в него ??? или что IDE сохраняет полные версии форм в history ? ну так переработайте алгоритм Цитата Ссылка на комментарий
0 Tumaso Опубликовано 8 ноября, 2017 Поделиться Опубликовано 8 ноября, 2017 Так суть TImageList в том и состоит, что он является коллекцией изображений. И конфигурируем мы его как правило именно в design-time, не? А если его нельзя использовать для управления 50 Мб картинками, то возникает вопрос необходимости использования этого компонента в принципе. Отключить в IDE сохранение истории конечно можно, но зачем тогда люди старались, делали такую фишку? Мне иногда пригождается. И да, я переделал работу с картинками - картинки хранятся в файлах, я их загружаю при старте приложения в TList<TImage> (вернее какие то изображения сразу, какие то при необходимости, какие то после использования в памяти уничтожаю). Работает быстро, проблемы тормозов при разработке нет. Цитата Ссылка на комментарий
0 krapotkin Опубликовано 8 ноября, 2017 Поделиться Опубликовано 8 ноября, 2017 основная фишка TImageList в том, что он умеет хранить в одном большом изображении набор иконок одного размера. И еще умеет выбирать Scale. Это удобно, когда делаешь дизайн программы Все остальное вы предположили самостоятельно поэтому подбирайте алгоритм и инструменты в соответствии с задачей по мне так для вашей задачи больше подходит TObjectList<TBitmap> Цитата Ссылка на комментарий
0 Tumaso Опубликовано 8 ноября, 2017 Поделиться Опубликовано 8 ноября, 2017 Да, я сначала использовал именно TObjectList<TBitmap>, но столкнулся с тем, что на андроиде у TBitmap не было выделенного дескриптора, а если использовать bitmap у TImage, то всё ок. Честно скажу, что гуглил мало, возможно что то не допонял / не доделал. Цитата Ссылка на комментарий
0 krapotkin Опубликовано 8 ноября, 2017 Поделиться Опубликовано 8 ноября, 2017 что-то не понял про дескриптор. речь про WinApi ? Цитата Ссылка на комментарий
0 Tumaso Опубликовано 8 ноября, 2017 Поделиться Опубликовано 8 ноября, 2017 нет, речь про андроид суть в том, что когда я делал var LBitmap: TBitmap; begin LBitmap := TBitmap.Create; try LBitmap.LoadFromFile(LSomeFileName); // здесь ок, загрузка успешна // начинаем что нибудь делать с этим битмапом в андроиде, получаем экспешн finally LBitmap.DisposeOf; end; end; Цитата Ссылка на комментарий
0 RoschinSpb Опубликовано 8 ноября, 2017 Поделиться Опубликовано 8 ноября, 2017 5 часов назад, Tumaso сказал: А если его нельзя использовать для управления 50 Мб картинками, то возникает вопрос... Любопытно было бы взглянуть на приложение которое работает на телефоне и грузит 50Мб картинок в кнопки во время старта. krapotkin и Andrey Efimov 2 Цитата Ссылка на комментарий
0 krapotkin Опубликовано 8 ноября, 2017 Поделиться Опубликовано 8 ноября, 2017 я использовал подобный код. все было совершенно нормально. только вместо DisposeOf обычное Free. нужно только помнить, что битмап до Токио -не работает в потоках Цитата Ссылка на комментарий
0 Tumaso Опубликовано 8 ноября, 2017 Поделиться Опубликовано 8 ноября, 2017 1 час назад, RoschinSpb сказал: Любопытно было бы взглянуть на приложение которое работает на телефоне и грузит 50Мб картинок в кнопки во время старта. Узко мыслите, коллега. Картинки используются не только на кнопках, а еще как фоновые картинки на фреймах, локализация изображений для разных стран (все помнят про разный символ земного шара в разных странах?) и т.д, вариантов применения статических изображений в приложении миллиард. А 50 Мб не предел, у дизайнеров UI в моей компании очень много идей. По идее TImageList и должен брать на себя всю черновую работу по работе с изображениями, чтобы не приходилось использовать свои TList<TImage>, не правда ли? Цитата Ссылка на комментарий
0 krapotkin Опубликовано 8 ноября, 2017 Поделиться Опубликовано 8 ноября, 2017 еще раз убедились, что одновременно эти картинки вам в памяти не нужны. поэтому им нечего там и делать в TImageList тоже можно загружать картинки динамически Цитата Ссылка на комментарий
0 RoschinSpb Опубликовано 9 ноября, 2017 Поделиться Опубликовано 9 ноября, 2017 13 часа назад, Tumaso сказал: По идее TImageList и должен брать на себя всю черновую работу по работе с изображениями, чтобы не приходилось использовать свои TList<TImage>, не правда ли? Всю работу, так он выполняет, или рисовать тоже должен не хуже фотошопа? Как я понял у вас проблема, IDE долго работает с 50Мб формой? Так это наверно вопрос к IDE, диску, SVN... и да TImageList не предназначен для хранения архива фотографий. Он предназначен для хранения пиктограмм для интерфейсных элементов. Были мысли по расширению возможностей и подзагрузки изображений в RunTime из разных источников (файлы, ресурсы, интернет), но не судьба уже видимо. Ну, как я понимаю скриншотика мобильного приложения с 50Мб картинок мы не дождемся. Я даже подозреваю почему. Цитата Ссылка на комментарий
0 Вольдемар Опубликовано 9 ноября, 2017 Автор Поделиться Опубликовано 9 ноября, 2017 3 часа назад, RoschinSpb сказал: Были мысли по расширению возможностей и подзагрузки изображений в RunTime из разных источников (файлы, ресурсы, интернет), но не судьба уже видимо Почему не судьба? Цитата Ссылка на комментарий
0 RoschinSpb Опубликовано 9 ноября, 2017 Поделиться Опубликовано 9 ноября, 2017 Потому, что ваш покорный слуга уже больше года в IDERA не работает как и большинство разработчиков. Цитата Ссылка на комментарий
0 Tumaso Опубликовано 9 ноября, 2017 Поделиться Опубликовано 9 ноября, 2017 31 минуту назад, RoschinSpb сказал: Ну, как я понимаю скриншотика мобильного приложения с 50Мб картинок мы не дождемся. Я даже подозреваю почему. Намекаете, что приложения не существует? Существует Alex7wrt 1 Цитата Ссылка на комментарий
0 RoschinSpb Опубликовано 9 ноября, 2017 Поделиться Опубликовано 9 ноября, 2017 Да, мило. Как уже было сказано можно подгружать фотографии и в TImageList в RunTime, примеров тут есть. begin Button1.Images := ImageList1; Button1.ImageIndex := ImageList1.AddOrSet('Add', [1, 1.5, 2], ['D:\Мои веселые картинки\Icons\add16.png', 'D:\Мои веселые картинки\Icons\add24.png', 'D:\Мои веселые картинки\Icons\add32.png']); end; Тогда в отличие от TList будет автоматически разруливаться ситуация с большим количеством одновременно созданных TBitmap. TBitmap это довольно ресурсоёмкий объект (отсюда и возможные ошибки с дескрипторами) их количество ограничено, особенно на телефонах, TImageList хранит данные хоть и в памяти но просто в виде двоичных данных (в формате PNG), при этом системные объекты создаются и уничтожатся по мере использования, максимальное их количество можно задать свойством CacheSize (должно быть не меньше чем максимальное количество одновременно видимых картинок на экране). Anatoliy 1 Цитата Ссылка на комментарий
Вопрос
Вольдемар
Подскажите плиз, как сделать картинку для TSpeedButton или TButton?
Ссылка на комментарий
29 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.