| Посл.ответ |
Сообщение |
|
Создано: 31 мая 2006 13:39:04 Личное сообщение #1
Доброго времени суток всем!
Никто не знает, как API'вскими методами осуществить прозрачность определенного цвета на окне, как это было реализовано в Делфях (там можно указать определенный цвет, который будет прозрачен, т.е. если у нас есть черный Label и мы делаем прозрачным черный цвет, то в месте, где был лэйбл мы видим грубо говоря дырку, через которую можем кликать на нижележащее окно)?
Спасибо.
----- ... we have to give freedom its REVENGE! ...
|
|
|
Создано: 31 мая 2006 13:45:30 Личное сообщение #2
Я реализовал через SetWindowRgn...
|
|
Создано: 31 мая 2006 13:48:57 Личное сообщение #3
У меня получилось вырезать кусок окна просто, а вот как сделать так, чтобы вырезался участок определенного цвета, не разобрался...
----- ... we have to give freedom its REVENGE! ...
|
|
Создано: 31 мая 2006 13:51:24 Личное сообщение #4 |
|
Создано: 31 мая 2006 14:09:16 Личное сообщение #5 |
|
Создано: 31 мая 2006 14:14:05 Личное сообщение #6
d1v0x
Там точно нориальный архив?
По-моему, он бытый, и там не все...
----- ... we have to give freedom its REVENGE! ...
|
|
Создано: 31 мая 2006 14:24:04 Личное сообщение #7
4kusNick всё гуд...
просто это на форуме такой прикол - зачем то архивы переупаковываюцца в tgz...
я это ужо давно заметил...
кароч распаковываеш и игнорируеш сообщения ВинРАР'а
|
|
Создано: 31 мая 2006 14:41:32 Личное сообщение #8
В Win2000 и свеже есть стандартные средства для этого дела (наподобии усатновки прозрачности для окна).
|
|
Создано: 31 мая 2006 15:10:01 Личное сообщение #9
Delphi/BCB использует также SetWindowRgn...
В доказательство ;)
Address Stack Procedure / arguments
0012EC6C 5AD7868E ? USER32.SetWindowRgn
0012EC70 00090652 hWnd = 00090652 ('Form1',class='TForm1')
0012EC74 8B04209F hRgn = 8B04209F
0012EC78 00000001 Redraw = TRUE
|
|
Создано: 31 мая 2006 15:29:34 Личное сообщение #10
Хм, интересно...
Может, кто на делфях пример простой наваяет?
----- ... we have to give freedom its REVENGE! ...
|
|
Создано: 31 мая 2006 17:07:38 Личное сообщение #11
TMyForm = class (TForm)
...
protected
procedure CreateParams(var Params: TCreateParams); override;
end;
...
const WS_EX_LAYERED = $00080000;
LWA_COLORKEY = $00000001;
LWA_ALPHA = $00000002;
procedure TMyForm .CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do
begin
ExStyle:=WS_EX_LAYERED;
end;
end;
procedure TMyForm .FormCreate(Sender: TObject);
begin
SetLayeredWindowAttributes(Handle, ColorToRGB(ПРОЗРАЧНЫЙ_ЦВЕТ), 0, LWA_COLORKEY)
end;
|
|
Создано: 31 мая 2006 18:35:34 Личное сообщение #12
dermatolog
Спасибо огромное!
----- ... we have to give freedom its REVENGE! ...
|
|
Создано: 1 июня 2006 11:11:43 Личное сообщение #13
Вот нарисовал оба метода на masm9
http://slil.ru/22800731
password:cracklab
Безусловно метод SetLayeredWindowAttributes лучше... Жаль работает только в 2k/xp...
[dicr0n] пишет:
Delphi/BCB использует также SetWindowRgn...
В доказательство ;)
На самом деле так рисует uxtheme.dll
А Delphi/BCB использует как-раз-таки SetLayeredWindowAttributes
;)
|