Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

прозрачность

5.8K
18 сентября 2005 года
ivan1985
42 / / 29.06.2005
1)как сделать чтобы прозрачность формы была неоднородной?(например, чтобы края были совсем прозрачные, а центр - нет)
2)как сделать компонент прозрачным?
748
20 сентября 2005 года
AlphaOmega
159 / / 28.09.2004
Цитата:
Originally posted by ivan1985
1)как сделать чтобы прозрачность формы была неоднородной?(например, чтобы края были совсем прозрачные, а центр - нет)
2)как сделать компонент прозрачным?


Есть способ задать прозрачность двуродную - часть непрозрачна вообще, другая часть прозрачна на столько, на сколько нужно.

эту часть: OnCreate:
try
{
typedef DWORD (WINAPI *PSLWA)(HWND, DWORD, BYTE, DWORD);
PSLWA pSetLayeredWindowAttributes;
HMODULE hDLL = LoadLibrary ("user32");
pSetLayeredWindowAttributes = (PSLWA) GetProcAddress(hDLL,"SetLayeredWindowAttributes");
if (pSetLayeredWindowAttributes != NULL) {SetWindowLong (Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) | 0x80000);}
FreeLibrary (hDLL);
}
catch (...) { }

а это в любом нужном месте

try
{
typedef DWORD (WINAPI *PSLWA)(HWND, DWORD, BYTE, DWORD);
PSLWA pSetLayeredWindowAttributes;
HMODULE hDLL = LoadLibrary ("user32");
pSetLayeredWindowAttributes = (PSLWA) GetProcAddress(hDLL,"SetLayeredWindowAttributes");
if (pSetLayeredWindowAttributes != NULL)
{
if (transFade != 5) {pSetLayeredWindowAttributes (Handle, clRed, 100, LWA_COLORKEY);}
}
FreeLibrary (hDLL);

тогда всё, что у тебя на форме КРАСНОГО цвета - будет прозрачным на 100 единиц

5.8K
20 сентября 2005 года
ivan1985
42 / / 29.06.2005
undefined symbol "transFade"
748
20 сентября 2005 года
AlphaOmega
159 / / 28.09.2004
Цитата:
Originally posted by ivan1985
undefined symbol "TransFade"


Упс. Извиняюсь - я скопировал код из своего проекта. Там у меня переменная использовалась. Просто убери там if чтобы строка была

pSetLayeredWindowAttributes (Handle, clRed, 100, LWA_COLORKEY);

5.8K
21 сентября 2005 года
ivan1985
42 / / 29.06.2005
ничего не поменялось - форма даже не красная, изменение атрибута прозрачности никак не влияет...
(builder 6, XP)
748
21 сентября 2005 года
AlphaOmega
159 / / 28.09.2004
этот код делает полупрозрачным всё окно

typedef DWORD (WINAPI *PSLWA)(HWND, DWORD, BYTE, DWORD);
PSLWA pSetLayeredWindowAttributes;
HMODULE hDLL = LoadLibrary ("user32");
pSetLayeredWindowAttributes = (PSLWA) GetProcAddress
(hDLL,"SetLayeredWindowAttributes");
if (pSetLayeredWindowAttributes != NULL) {
SetWindowLong (Handle, GWL_EXSTYLE, GetWindowLong
(Handle, GWL_EXSTYLE) | 0x80000);
pSetLayeredWindowAttributes (Handle, 0, 128, 2);
}
FreeLibrary (hDLL);


а этот - его красную часть (clRed)

typedef DWORD (WINAPI *PSLWA)(HWND, DWORD, BYTE, DWORD);
PSLWA pSetLayeredWindowAttributes;
HMODULE hDLL = LoadLibrary ("user32");
pSetLayeredWindowAttributes = (PSLWA) GetProcAddress
(hDLL,"SetLayeredWindowAttributes");
if (pSetLayeredWindowAttributes != NULL) {
SetWindowLong (Handle, GWL_EXSTYLE, GetWindowLong
(Handle, GWL_EXSTYLE) | 0x80000);
pSetLayeredWindowAttributes(Handle, clRed, 0, LWA_COLORKEY);

}
FreeLibrary (hDLL);
748
21 сентября 2005 года
AlphaOmega
159 / / 28.09.2004
Заметил сейчас одну особенность. Во втором варианте (с цветом) уровень прозрачности выставить нельзя. То есть одна часть окна у тебя полностью НЕпрозрачна, а красная - полностью прозрачна. вот...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог