Сейчас на форуме: asfa, bartolomeo, hgdagon (+6 невидимых)

 eXeL@B —› Программирование —› Прозрачность цвета
Посл.ответ Сообщение


Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 31 мая 2006 13:39
· Личное сообщение · #1

Доброго времени суток всем!
Никто не знает, как API'вскими методами осуществить прозрачность определенного цвета на окне, как это было реализовано в Делфях (там можно указать определенный цвет, который будет прозрачен, т.е. если у нас есть черный Label и мы делаем прозрачным черный цвет, то в месте, где был лэйбл мы видим грубо говоря дырку, через которую можем кликать на нижележащее окно)?
Спасибо.

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.




Ранг: 14.9 (новичок)
Активность: 0.020
Статус: Участник

Создано: 31 мая 2006 13:45
· Личное сообщение · #2

Я реализовал через SetWindowRgn...




Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 31 мая 2006 13:48
· Личное сообщение · #3

У меня получилось вырезать кусок окна просто, а вот как сделать так, чтобы вырезался участок определенного цвета, не разобрался...

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.




Ранг: 79.4 (постоянный)
Активность: 0.090
Статус: Участник

Создано: 31 мая 2006 13:51
· Личное сообщение · #4

дык помойму только так и нуно делать...
в аттаче пример на вб6...


5c66_31.05.2006_CRACKLAB.rU.tgz - SetWindowRgn.rar



Ранг: 14.9 (новичок)
Активность: 0.020
Статус: Участник

Создано: 31 мая 2006 14:09
· Личное сообщение · #5

Сам я не видел, но слышал ;) что Game Trainer Studio делает исходники на асме с использованием региона методом SetWindowRgn
http://treinerov.net/go=Files&in=view&id=49 http://treinerov.net/go=Files&in=view&id=49
~3 Mb




Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 31 мая 2006 14:14
· Личное сообщение · #6

d1v0x
Там точно нориальный архив?
По-моему, он бытый, и там не все...

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.




Ранг: 79.4 (постоянный)
Активность: 0.090
Статус: Участник

Создано: 31 мая 2006 14:24
· Личное сообщение · #7

4kusNick всё гуд...
просто это на форуме такой прикол - зачем то архивы переупаковываюцца в tgz...
я это ужо давно заметил...
кароч распаковываеш и игнорируеш сообщения ВинРАР'а




Ранг: 116.6 (ветеран), 8thx
Активность: 0.050
Статус: Участник

Создано: 31 мая 2006 14:41
· Личное сообщение · #8

В Win2000 и свеже есть стандартные средства для этого дела (наподобии усатновки прозрачности для окна).



Ранг: 14.9 (новичок)
Активность: 0.020
Статус: Участник

Создано: 31 мая 2006 15:10
· Личное сообщение · #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




Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 31 мая 2006 15:29
· Личное сообщение · #10

Хм, интересно...
Может, кто на делфях пример простой наваяет?

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.





Ранг: 116.6 (ветеран), 8thx
Активность: 0.050
Статус: Участник

Создано: 31 мая 2006 17:07
· Личное сообщение · #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;




Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 31 мая 2006 18:35
· Личное сообщение · #12

dermatolog
Спасибо огромное!

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.




Ранг: 14.9 (новичок)
Активность: 0.020
Статус: Участник

Создано: 01 июня 2006 11:11
· Личное сообщение · #13

Вот нарисовал оба метода на masm9
http://slil.ru/22800731 http://slil.ru/22800731
password:cracklab

Безусловно метод SetLayeredWindowAttributes лучше... Жаль работает только в 2k/xp...

[dicr0n] пишет:
Delphi/BCB использует также SetWindowRgn...
В доказательство ;)


На самом деле так рисует uxtheme.dll
А Delphi/BCB использует как-раз-таки SetLayeredWindowAttributes

;)


 eXeL@B —› Программирование —› Прозрачность цвета
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати