![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Частичная прозрачность [D7, WinXP]
маленький человек © (2005-10-25 05:44:00)Доброго времени суток уважаемые... подскажите пожалусто каким образом можно реализовать следующее - частичную прозрачность формы.
Типичным примером является меню "ПУСК". Если поперетаскивать ярлыки из ПУСК->Программы, то во время перемещения элемент меню будет "градиентно" прозрачным...
Интересно как же это можно сделать самому?
З.Ы. Все вышесказанное относится к ХР...
Antonn (2005-11-07 11:02:00) [21]маленький человек (07.11.05 10:00) [12]
у какой грамотный сабж... ну никогда такого не встречал...
для уточнения: сабж (subject) - тема. Спросил ты, можно ли "Частичная прозрачность" через UpdateLayeredWindow?
маленький человек (2005-11-07 10:15:00) [22]http://www.am-ende.net/delphi/alphaeffects/- вот тут если кого интересует частичная прозрачность...
маленький человек (2005-11-07 10:00:00) [23]у какой грамотный сабж... ну никогда такого не встречал...
Antonn (2005-11-07 09:14:00) [24]мона.
маленький человек (2005-11-07 07:21:00) [25]Сабж мона?
Antonn (2005-11-07 05:25:00) [26]сказали же уже, смотри UpdateLayeredWindow!
маленький человек (2005-11-07 05:16:00) [27]перевелись мастера делфи :(
маленький человек (2005-11-02 05:32:00) [28]up
маленький человек (2005-10-31 13:41:00) [29]Может многоуважаемые мастера что подскажут? или неужели они ничего не знают по этому поводу?
vers (2005-10-27 17:23:00) [30]компоненты TPngObject и набор компонент PNGComponents могут рисовать 32-битные картинки в формате png, может это поможет?
Antonn (2005-10-27 12:09:00) [31]маленький человек (25.10.05 5:44)
сам ищу, как так сделать...
есть функция UpdateLayeredWindow, она 32 битный битмап просит, и по алфаканалу пррозрачность выставляет. но плохо то, что после ее использования ни один контрол не виден...
SpellCaster (2005-10-27 12:05:00) [32]form.alphablend:=true;
form.alphablendvalue:=200;
маленький человек (2005-10-25 11:25:00) [33]Хе... это все прекрастно... но мне бы именно через альфу...?
ZeroDivide (2005-10-25 08:52:00) [34]Алгоритм:
R := GetRValue(ColorToRGB(cl));
G := GetGValue(ColorToRGB(cl));
B := GetBValue(ColorToRGB(cl));
Rr := GetRValue(t.Canvas.Pixels[m-dx, n-dy]);
Gg := GetGValue(t.Canvas.Pixels[m-dx, n-dy]);
Bb := GetBValue(t.Canvas.Pixels[m-dx, n-dy]);
R :=(Transparency*R+(100-Transparency)*Rr) div 100;
G :=(Transparency*G+(100-Transparency)*Gg) div 100;
B :=(Transparency*B+(100-Transparency)*Bb) div 100;
t.Canvas.Pixels[m-dx, n-dy] := RGB(R, G, B);
Transparency от 0 до 100. Можешь менять для разных точек в зависимости от их расположения. Таким образом можешь какие угодно градиенты делать.
Есть еще AlphaBlend и AlphaBlendValue у формы, но градиента они тебе не дадут.