![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
полупрозрачность
dr_craigan © (2007-04-17 13:11:00)Плиз, кто знает помогите - уже месяц с полупрозрачностью мучаюсь. Короче, нужно сделать полупрозрачным один регион (или хотя бы прямоугольник). пробовал UpdateLayeredWindow и AlphaBlend, но не могу найти нужные параметры, чтобы было как надо. Если знаете, помогите.
homm (2007-04-19 13:32:00) [1]> Может кто знает, как фотошоп делали,
А что, там где-то окна полупрозрачные?
{RASkov} (2007-04-19 12:58:00) [2]> Может кто знает, как фотошоп делали, или Висту, тогда подскажите
Ага... в прошлом году всем форумом Висту лепили...
dr_craigan (2007-04-19 12:40:00) [3]Может кто знает, как фотошоп делали, или Висту, тогда подскажите
dr_craigan (2007-04-17 14:07:00) [4]ау, проснитесь, разве никто не работал с графикой и дизайном своих прог
dr_craigan (2007-04-17 13:51:00) [5]Понимаешь, мне надо чтоб как в висте - полупрозрачный регион, как там заголовок и другая муть, а SetLayeredWindowAttributes - переделывает всё окно.
Призрак в облаках (2007-04-17 13:40:00) [6]Как сделать прозрачное окно родными средствами Windows 2000 или ХР?
В Windows2000 есть для этого ф-я SetLayeredWindowAttributes, вот пример её использования:
unit Win2k;
interface
uses Graphics, Windows;
function SetLayeredWindowAttributes(
hwnd : HWND; // handle to the layered window
crKey : TColor; // specifies the color key
bAlpha : byte; // value for the blend function
dwFlags : DWORD // action
): BOOL; stdcall;
function SetLayeredWindowAttributes; external 'user32.dll';
implementation
end.
program WinLayer;
uses
Windows, SysUtils,
Win2k in 'Win2k.pas';
const
WS_EX_LAYERED= $80000;
LWA_COLORKEY = 1;
LWA_ALPHA = 2;
var
Hndl : THandle;
Transp : Byte;
begin
Writeln('Windows2000 Layer <- build by AK ->');
Writeln(' Usage: WINLAYER.EXE [window name] [Transp (0-255)]');
Writeln(' Example: WINLAYER "Calculator" 200');
Writeln;
if ParamCount <> 2 then exit;
Hndl := FindWindow(nil, PChar(ParamStr(1)));
Transp := StrToIntDef(ParamStr(2), 128);
if SetWindowLong(Hndl, GWL_EXSTYLE, GetWindowLong(Hndl, GWL_EXSTYLE) or WS_EX_LAYERED) = 0 then
Writeln('Error !');
if not SetLayeredWindowAttributes(Hndl, 0, Transp, LWA_ALPHA) then
// ^^^ степень прозрачности
// 0 - полная прозрачность
// 255 - полная непрозрачность
Writeln('Error !');
end.
Где взял не помню:(
dr_craigan (2007-04-17 13:22:00) [7]Да кстати, вся остальная форма должна быть нетронутой (компоненты должны быть видны)