![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#2
|
||||
|
||||
|
см. DwmAPI
|
|
#3
|
|||
|
|||
|
alfaskins тень умеет, а можно ли сделать цветной не знаю
|
|
#4
|
|||
|
|||
|
мне нужно не именно тень по всему контору окна, а сделать это какими нибудь средствами рисования, чтоб управлять отдельно неоном с левой стороны и правой.
Узнал что YzShadow рисует всё через GDI+. Но как в gdi+ нарисовать градиент с прозрачностью, чтоб было видно что находится за окном, как на скрине в первом посту. Делаю новое окно поверх главного с прозрачным цветом "TransparentColor" пробовал рисовать и в PaintBox-е и на самом окне, прозрачности нет. Кто знает как добиться желаемого результата?Последний раз редактировалось DJDrugsounD, 16.08.2012 в 20:29. |
|
#5
|
||||
|
||||
|
Цитата:
Дома пороюсь в своих проектах и позже более подробно опишу. |
|
#6
|
||||
|
||||
|
Как вариант для 24 битных битмапов. НИКАКИХ проверок не делается и нужно допиливать для цветной тени:
Код:
procedure DropShadow(X, Y, Width, Height : Integer; var bmRes : TBitmap; Alpha : Integer);
var
pBits : Pointer;
I, J, Z, Size : Integer;
bmp : TBitmap;
begin
Size := bmRes.Width * bmRes.Height * 3;
GetMem(pBits, Size);
try
GetBitmapBits(bmRes.Handle, Size, pBits);
for J := Y to Y + Height - 1 do
for I := X to X + Width - 1 do
begin
Z := J * bmRes.Width * 3 + I * 3;
asm
pushad
mov esi, pBits
add esi, Z
mov edi, esi
mov ebx, Alpha
mov ecx, 3
@loop:
lodsb
mul bl
xchg al, ah
stosb
loop @loop
popad
end;
end;
SetBitmapBits(bmRes.Handle, Size, pBits);
finally
FreeMem(pBits);
end;
end; |