Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Прозрачность части окна


Nil ©   (2007-12-08 12:09:00) 

пожскажите пож как сделать прозрачным лишь часть окна. нашёл кусок который делает прозрачным всё окно, а мне хотелось бы убрать прозрачность с TImage который на форме лежит.

Rgn := CreateRoundRectRgn(0, 0, 750, 550, 20, 20); //ClientWidth - 5, ClientHeight - 30, 40, 40);
 SetWindowRgn(Handle, rgn, True);
 //**************************************************************************//

 // Создаем полупрозрачность
 if SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE)
 or WS_EX_LAYERED) = 0 then
   ShowMessage(SysErrorMessage(GetLastError));

 if not SetLayeredWindowAttributes(Handle , 0, 245, LWA_ALPHA) then
   // ^^^ степень прозрачности
   // 0 - полная прозрачность
   // 255 - полная непрозрачность
   ShowMessage(SysErrorMessage(GetLastError));

Заранее благодарен!


Nil   (2007-12-11 02:07:00) [1]

понятно, и на этом отдельный thanks!


{RASkov}   (2007-12-10 14:30:00) [2]

> [7] Nil   (10.12.07 00:09)
> не прояснишь что надо добавить/убавить чтобы их увидеть?

Хз... это не мое... всякие прозрачности :(
Может antonn сюда заглянет и подскажет умную мысль :) ...Сорри(


Nil   (2007-12-10 00:09:00) [3]

спасибо большое! увидел напрваление куда смотреть. единственное в этом примере никакие контролы на форме не показываются почему то. не прояснишь что надо добавить/убавить чтобы их увидеть?


{RASkov}   (2007-12-09 02:08:00) [4]

Что-то я куда-то не туда залил :) сорри... вот тут проще вроде:
http://webfile.ru/1633428


{RASkov}   (2007-12-09 02:03:00) [5]

> [4] Nil   (08.12.07 23:40)

Тогда посмотри вот это:
http://depositfiles.com/files/2643139
Собственно это пример antonna
http://code.progler.ru/view/318
Я сменил только рисунки )


Nil   (2007-12-08 23:40:00) [6]

Спасибо, но это получается просто дырка в окне, а у меня нужно чтобы это была не дырка а снять прозрачность с этого квадрата. Помоги пож, я уже всё обсмотрел, ничего не вижу похожего. Хочется закосить под стиль висты :)


{RASkov}   (2007-12-08 17:41:00) [7]

> [2] Nil   (08.12.07 16:22)
> нужно просто убрать прозрачность с квадратного куска формы

procedure TForm1.FormCreate(Sender: TObject);
var FRGN, FRGN1: HRGN; N: Integer;
begin
 ClientWidth:=Screen.Width; ClientHeight:=Screen.Height;
 FRGN:=CreateRectRgn(0, 0, ClientWidth, ClientHeight);
 FRGN1:=CreateRectRgn(10, 10, ClientWidth-10, ClientHeight-10);
 CombineRgn(FRGN, FRGN, FRGN1, RGN_DIFF);
try
 SetWindowRgn(Handle, FRGN, False);
 N:=GetWindowLong(Handle, GWL_EXSTYLE);
 SetWindowLong(Handle, GWL_EXSTYLE, N or WS_EX_TOOLWINDOW or WS_EX_NOACTIVATE);
finally DeleteObject(FRGN); end;
end;


Может этого будет достаточно?


Nil   (2007-12-08 16:22:00) [8]

смотрел.. не совсем подходит. я так понимаю в моём случау всё должно быть гораздо проще.  мне не нужна полупрозрачность, нужно просто убрать прозрачность с квадратного куска формы


{RASkov}   (2007-12-08 12:48:00) [9]

Вот в соседней ветке
http://www.delphimaster.ru/cgi-bin/forum.pl?n=5&id=1194300418
homm архив выложил....
Смотрел его? Вопрос-то твой вроде бы похож на вопрос в той ветке...


Наверх

Титульная страница Поиск, карта сайта Написать письмо