Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 469

/ вопрос открыт /

Приветствую, уважаемые эксперты!
Загружаю на SpeedButton картинку bmp (см файл). На кнопке затирается весь оранжевый фон картинки! какую бы картинку я не делал в любом случае один из ее цветов будет затерт при загрузке на SpeedButton или BitBtn. В чем тут дело?

К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)

AlexMPEI Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: AlexMPEI (статус: 1-ый класс)
Вопрос отправлен: 29 июля 2010, 10:53
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, AlexMPEI!
Выставить свойство Transparent = False.
или, более кривой способ - в пиксель [0,0] нужно записать какой то другой цвет.

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 29 июля 2010, 10:58


Мини-форум вопроса

Всего сообщений: 8; последнее сообщение — 29 июля 2010, 13:16; участников в обсуждении: 3.
Тов. Женька

Тов. Женька (статус: 3-ий класс), 29 июля 2010, 10:57 [#1]:

Все дело в том, что вырезается весь цвет совпадающий с цветом левого нижнего пикселя картинки.
AlexMPEI

AlexMPEI (статус: 1-ый класс), 29 июля 2010, 12:17 [#2]:

"Выставить свойство Transparent = False."

Чему нужно выставить это свойство? Я его выставляю и кнопке и загруженному битмапу, но эффекта нет. запись в пиксел 0,0 другого цвета
unselectedBMP.Canvas.Pixels[0,0] := clRed;
тоже ничего не дает. и я в итоге вижу этот пиксель в левом верхнем углу.
Вадим К

Вадим К (статус: Академик), 29 июля 2010, 12:26 [#3]:

выставить нужно кнопке до загрузки битмапа.
Второе тоже не поможет, потому что картинка на той момент загружена. Править нужно начальный bmp перед загрузкой.
Галочка "подтверждения прочтения" - вселенское зло.
AlexMPEI

AlexMPEI (статус: 1-ый класс), 29 июля 2010, 12:35 [#4]:

я это свойство выставляю компоненту еще в редакторе формы, а загрузку делаю в конструкторе. Также перед загрузкой на кнопку заменяю цвет пиксела 0,0

procedure TForm1.FormCreate(Sender: TObject);
var
unselectedBMP: TBitmap;
path: string;
unselectedPNG: TPNGObject;
begin
SpeedButton1.Transparent := false;
unselectedBMP := TBitmap.Create;
path := ExtractFilePath(Application.ExeName) + 'unselect_btn.bmp';
unselectedBMP.LoadFromFile(path);
unselectedBMP.Canvas.Pixels[0,0] := clRed;
SpeedButton1.Glyph := unselectedBMP;
unselectedBMP.Free;
end;

но эффекта это не дает.
Вадим К

Вадим К (статус: Академик), 29 июля 2010, 12:47 [#5]:

замену пикселя в данном случае делать не стоит. я писал о взаимоисключающих вариантах.

А если загрузить картинку ещё в испекторе объектов. глюк тоже воспроизводиться?
Галочка "подтверждения прочтения" - вселенское зло.
Тов. Женька

Тов. Женька (статус: 3-ий класс), 29 июля 2010, 13:01 [#6]:

Transparent лишь делает кнопку прозрачной, на glyph это не влияет. Меняй пиксель на нейтральный.
AlexMPEI

AlexMPEI (статус: 1-ый класс), 29 июля 2010, 13:08 [#7]:

если в инспекторе объектов тоже нет эффекта.
Что значит "нейтральный пиксел"?
насколько я выяснил, затирается вроде не цвет 0-вого пиксела, а первый цвет в палитре цветов...
Тов. Женька

Тов. Женька (статус: 3-ий класс), 29 июля 2010, 13:16 [#8]:

нейтральный - значит непохожий на остальные.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:39
Выполнено за 0.02 сек.