прозрачность
2)как сделать компонент прозрачным?
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 единиц
undefined symbol "TransFade"
Упс. Извиняюсь - я скопировал код из своего проекта. Там у меня переменная использовалась. Просто убери там if чтобы строка была
pSetLayeredWindowAttributes (Handle, clRed, 100, LWA_COLORKEY);
(builder 6, XP)
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);