|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.10.2014, 10:06 | #1 |
Форумчанин
Регистрация: 03.01.2011
Сообщений: 233
|
как заменять картинки в TImageList ?
Доброго времени суток.
Хотел программно заменить картинку в TImageList - не вышло, пробовал и так и сяк, не понимаю какую маску нужно отправлять, закидал масками от души, меняется только нижняя часть картинки которую я перерисовываю, какую маску мне нужно нарисовать чтобы картинка заменилась полностью? Код:
пыжок
Последний раз редактировалось maloun; 21.10.2014 в 12:20. |
21.10.2014, 13:12 | #2 |
Форумчанин
Регистрация: 03.01.2011
Сообщений: 233
|
оказалось это болезнь всех SpeedButton ToolButton и прочих кнопок, их картинки обрезаются с краев от лишних цветов, таким образом моя картинка не полностью рисовалась с краев, а вот как это отрубить я уже хз
у SpeedButton к примеру, свойство Glyph выдает полноразмерную картинку, а отображает на форме уже обрезанную, у ToolButton все проще, картинки берутся из ImageList'а, и рисуются нормально пока не начнешь заменять их в ImageList'е, тогда они обрезаются так же как и в SpeedButton, картинку прикрепляю сюда, обрезается красная линия внизу картинки
пыжок
Последний раз редактировалось maloun; 21.10.2014 в 13:27. |
21.10.2014, 18:14 | #3 | |
Форумчанин
Регистрация: 03.04.2013
Сообщений: 703
|
Цитата:
99% ошибок компьютера сидит в полуметре от монитора.
|
|
21.10.2014, 18:57 | #4 |
Заблокирован
Регистрация: 12.09.2014
Сообщений: 544
|
Gryph, то есть битмап, это контейнер для изображения (читать выделенная память). Как-то странно от контейнера ждать, что он будет что-то жать. Хочется жать, делаем ручками.
|
22.10.2014, 10:35 | #5 | |
Форумчанин
Регистрация: 03.01.2011
Сообщений: 233
|
Цитата:
На кнопке моя картинка из Glyph рисуется без красной линии. Если сохранить картинку из Glyph в другой bmp и нарисовать его на TImage - картинка рисуется полностью. То есть в контейнере нормальная картинка, а на кнопке обрезанная. При этом если использовать TToolButton вместо TSpeedButton в первый раз картинка будет нарисована полностью, а после замены картинки на такую-же но с другим цветом уже будет обрезана. Учитывая что я выяснил что ImageList тут не причем тема может считаться закрытой. А вопрос уже переходит к другой теме: "Как правильно рисовать картинки на кнопках?", может есть способы отключить на кнопках редактирование изображений или еще что, но если никто не знает, придется лезть в недра компонентов и смотреть кто там рисует, как-нибудь потом займусь этим вопросом Случайно продублировал сообщение, вместо того чтобы отредактировать, прошу модератора удалить этот пост
пыжок
Последний раз редактировалось maloun; 22.10.2014 в 12:14. |
|
22.10.2014, 12:10 | #6 | |
Форумчанин
Регистрация: 03.01.2011
Сообщений: 233
|
Да, у меня именно размер картинки 16x16, рисуется из них 16x14, и с картинками другого вида все нормально, проблема именно с теми
картинками, у краев которых есть область цвета на всю ширину картинки, какой-то "умный" оптимизатор убирает такие области и моя картинка рисуется как бы без всего лишнего, хотя я такой помощи не просил и картинку хотел видеть в полном размере. Цитата:
На кнопке моя картинка из Glyph рисуется без красной линии. Если сохранить картинку из Glyph в другой bmp и нарисовать его на TImage - картинка рисуется полностью. То есть в контейнере нормальная картинка, а на кнопке обрезанная. При этом если использовать TToolButton вместо TSpeedButton в первый раз картинка будет нарисована полностью, а после замены картинки на такую-же но с другим цветом уже будет обрезана. Учитывая что я выяснил что ImageList тут не причем тема может считаться закрытой. А вопрос уже переходит к другой теме: "Как правильно рисовать картинки на кнопках?", может есть способы отключить на кнопках редактирование изображений или еще что, но если никто не знает, придется лезть в недра компонентов и смотреть кто там рисует, как-нибудь потом займусь этим вопросом
пыжок
|
|
25.11.2014, 22:18 | #7 |
Форумчанин
Регистрация: 03.01.2011
Сообщений: 233
|
И так спустя пару недель я решил рас и на всегда расквитаться с этим "багом" и таки умудрился откопать что к чему.
Секрет замены картинок с прозрачным цветом в ToolBar: перед добавлением иконки в ImageList, в нем должны быть выставлены ColorDepth: cdDeviceDependent; BkColor: clWhite; далее после добавления иконки в окно ImageList'а должен быть выставлен прозрачный цвет для этой картинки. Секрет замены картинок с прозрачным цветом в SpeedButton, с отключением обрезания картинки по краям "умным" определителем: выставляете Glyph.TransparentColor в цвет фона картинки которую присваиваете и\или делаете Glyph.TransparentMode:=tmFixed вместо tmAuto. выкладываю пример рабочего кода
пыжок
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как из TImageList'a, состоящий из PNG, вывести нужный в TImage | fedorov2012 | Общие вопросы Delphi | 10 | 16.04.2013 17:28 |
TListView как заставить корректно отображаться png, через TImageList или TcxImageList | fedorov2012 | Общие вопросы Delphi | 1 | 09.02.2013 21:08 |
Рандомно в Timage грузить картинки из TimageList | Человек_Борща | Общие вопросы Delphi | 6 | 09.01.2011 09:45 |
Как заменять ',' на '.' ? | kta87 | Помощь студентам | 4 | 02.03.2010 13:50 |
Как заставить одну ячейку заменять другую | Kairan | Microsoft Office Excel | 8 | 22.02.2010 06:10 |