Прозрачность компонентов

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Прозрачность компонентов

Сообщение nagash » 14.01.2010 17:39:13

Доброго времени суток всем :)
В дельфях у большинства компонентов есть свойство AlphaBlend, которое вроде как позволяет регулировать прозрачность компонента.
В лазарусе такое свойство, также как и прозрачность всего окна целиком, не реализовано.
Вопрос - как это можно сделать с помощью винапи?

Прозрачность самого окна я сделал так:
Код: Выделить всё
SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_LAYERED);
SetLayeredWindowAttributes(Handle,0,TransparencySwitch.Position,LWA_ALPHA);


А вот насчет прозрачности отдельных элементов что-то идей никаких :(

UPD:
lazarus 0.9.28.2 (fpc 2.2.4) @ Windows Vista
Последний раз редактировалось nagash 15.01.2010 19:34:32, всего редактировалось 1 раз.
nagash
новенький
 
Сообщения: 50
Зарегистрирован: 21.05.2007 08:27:05

Re: Прозрачность компонентов

Сообщение Climber » 15.01.2010 13:40:11

У некоторых элементов вроде бы тоже должно быть свое окно и, соответственно, хендл окна? Может, так же и попробовать?
Climber
постоялец
 
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Re: Прозрачность компонентов

Сообщение hinst » 15.01.2010 17:13:27

также как и прозрачность всего окна целиком

почему это? а TForm.AlphaBlend разве не прозрачность окна регулирует?
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Re: Прозрачность компонентов

Сообщение nagash » 15.01.2010 17:21:59

Climber
У каких например?

hinst
Неа, нет такого свойства. По крайней мере в моей версии лазаруса.
nagash
новенький
 
Сообщения: 50
Зарегистрирован: 21.05.2007 08:27:05

Re: Прозрачность компонентов

Сообщение Climber » 15.01.2010 17:34:41

nagash
У всех наследников TWinControl, если память не изменяет.
Но вообще у меня основные познания идут из форума sql.ru, а там все Delphi'сты, так что в лазаре проверять надо ;)
Climber
постоялец
 
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Re: Прозрачность компонентов

Сообщение FedeX » 15.01.2010 18:20:51

Неа, только что проверил - для окон работает такой подход, а для всяких винконтролов с хендлом(панельки, кнопки) не работает.
Хотя не совсем могу представить зачем это для них такое надо, для окна понятно, а вот чтоб контролы становились полупрозрачными нигде не видел.
Аватара пользователя
FedeX
постоялец
 
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир

Re: Прозрачность компонентов

Сообщение nagash » 15.01.2010 19:32:14

FedeX
Вопрос "зачем?" это уже другая сторона медали :)
В основном для красоты конечно. Некоторым несерьезным приложениям (например в моем случае это лаунчеры к разным играм) подобные свистелки и перделки помогут немного улучшить внешний вид, относительно воздушных интерфейсов висты и в7.
Спорный вопрос конечно, но тем не менее - в дельфи это реализовано, а значит
1. это востребовано
2. это реально
nagash
новенький
 
Сообщения: 50
Зарегистрирован: 21.05.2007 08:27:05

Re: Прозрачность компонентов

Сообщение FedeX » 15.01.2010 19:57:26

В Делфи ж ведь только для окон и реализовано :wink:
Аватара пользователя
FedeX
постоялец
 
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир

Re: Прозрачность компонентов

Сообщение nagash » 15.01.2010 20:45:42

FedeX
Блин, действительно, сейчас погуглил - AlphaBlend есть только для форм.
Значит меня дезинформировал один нехороший человек :(

Ладно, тогда вопрос закрыт.
Извращения типа копирования фона под компонентом и накладывания его в фон компонента для имитации прозрачности или создания окна-пустышки с прозрачностью - это не для меня.
nagash
новенький
 
Сообщения: 50
Зарегистрирован: 21.05.2007 08:27:05

Re: Прозрачность компонентов

Сообщение Slavikk » 16.01.2010 14:56:00

nagash писал(а):Извращения типа копирования фона под компонентом и накладывания его в фон компонента для имитации прозрачности или создания окна-пустышки с прозрачностью - это не для меня.


Если решиш попробовать, то знай там всё не так как в Delphi, смотри wiki по Lazarus.
Аватара пользователя
Slavikk
постоялец
 
Сообщения: 208
Зарегистрирован: 15.01.2007 22:34:52
Откуда: Из лесов...

Re: Прозрачность компонентов

Сообщение FedeX » 16.01.2010 15:08:32

Я чтот-о пнообдое далел:
Изображение
Под Вин всё ннлесожо: (панелька порвех всех контролов + GetFormImage + WinAPI функция AlphaBlend) = всё работает быстро, как в играх с хардварным ускорением, даже на моём слабом домашнем компе с 1,4 ГГц проце в полноэкранном режиме. Все длаиовоыге онка так реишл в эотй тзуле селдтаь. Пёчирм фон птьвяелсояя не сразу а очень планво.
Под Линух, конечно AlphaBlend нет, поэтому пришлось поиграться с TLazIntfImage. Вышло тоже плавненько, но в фуллскрин всё-таки подтормаживало, а потом ещё выяснилось, что под Линей GetFormImage некорректно работает, потому решил пока под Линью эффект убрать.
Аватара пользователя
FedeX
постоялец
 
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 39

Рейтинг@Mail.ru