Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.07;
Скачать: CL | DM;

Вниз

Прозрачная форма   Найти похожие ветки 

 
Simon   (2004-10-19 05:12) [0]

Как сделать прозрачную форму?
Я гдето встречал что-то типа:

var
Form2: TForm2;
begin
Form2:= TForm2.Create(self);
form2.Color:= form1.Color; //на form2 лежит Shape
form2.Shape1.Brush.Color:= form1.Color;
form2.Show;
end;


 
TeNY ©   (2004-10-19 07:36) [1]

form1.AlphaBlend:=true;
form1.AlphaBlendvalue:=150;


 
TeNY ©   (2004-10-19 09:22) [2]

а да токо в XP2k катитъ


 
Rem   (2004-10-19 09:52) [3]

>>Призрачная форма
Что Вы конкретно имели в виду?


 
crash_Rider   (2004-10-20 02:27) [4]

Он имел ввиду что этот код :
-----------------------------
form1.AlphaBlend:=true;
form1.AlphaBlendvalue:=150;
--------------------------------
Будет работать только в 2000 и ХР!
А если нужно сделать еще и в 98 то в инете надо искать там есть примеры!


 
Rem ©   (2004-10-20 09:42) [5]

2 [4]

Не делайте столь поспешных выводов. "Прозрачная" форма может быть и такой:
 Form1.TransparentColorValue := GetSysColor(COLOR_BTNFACE);
 Form1.TransparentColor := true;


 
InfMag ©   (2004-10-21 16:35) [6]

С помощью этой функции создаются так называемые "Обезбашенные окна"

function CreateRgnFromBitmap(rgnBitmap: TBitmap): HRGN;
var
TransColor: TColor;
i, j: Integer;
i_width, i_height: Integer;
i_left, i_right: Integer;
rectRgn: HRGN;
begin
Result := 0;
i_width := rgnBitmap.Width;
i_height := rgnBitmap.Height;
transColor := rgnBitmap.Canvas.Pixels[0, 0];
for i := 0 to i_height - 1 do
begin
i_left := -1;
for j := 0 to i_width - 1 do
begin
if i_left < 0 then
begin
if rgnBitmap.Canvas.Pixels[j, i] <> transColor then
i_left := j;
end
else
if rgnBitmap.Canvas.Pixels[j, i] = transColor then
begin
i_right := j;
rectRgn := CreateRectRgn(i_left, i, i_right, i + 1);
if Result = 0 then
Result := rectRgn
else
begin
CombineRgn(Result, Result, rectRgn, RGN_OR);
DeleteObject(rectRgn);
end;
i_left := -1;
end;
end;
if i_left >= 0 then
begin
rectRgn := CreateRectRgn(i_left, i, i_width, i + 1);
if Result = 0 then
Result := rectRgn
else
begin
CombineRgn(Result, Result, rectRgn, RGN_OR);
DeleteObject(rectRgn);
end;
end;
end;
end;

{и т.д. и т.п}

procedure TMainForm.FormCreate(Sender: TObject);
var
 WindowRgn: HRGN;
begin
 windowRgn := CreateRgnFromBitmap(Image1.Picture.Bitmap);
 SetWindowRgn(Handle, WindowRgn, True);
end;


 
TeNY ©   (2004-10-22 11:31) [7]


> 2 [4]
>
> Не делайте столь поспешных выводов. "Прозрачная" форма может
> быть и такой:
>  Form1.TransparentColorValue := GetSysColor(COLOR_BTNFACE);
>  Form1.TransparentColor := true;

кстати тоже только в 2к и хр у меня в ме по крайне мере не работает


 
Rem ©   (2004-10-22 11:50) [8]

InfMag ©   (21.10.04 16:35) [6]

Это болезнь. И диагноз ей: геморрой.

Особенно понравилось:
end;
end;
end;
end;

{и т.д. и т.п}


Сколько этого {и т.д. и т.п} должно быть?

И вообще, интересно, что при этом получится?... А то такой корявый код даже копировать не хочется, не то что проверять; а формулировка "Обезбашенные окна" не говорит ни о чем, разве что характеризует автора, причем, явно не с лучшей стороны.

А еще мне почему-то кажется, что Ваш алгоритм создания региона из растра весьма медленный. Очень-очень медленный...



Страницы: 1 вся ветка

Текущий архив: 2004.11.07;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.045 c
4-1096620777
thoth
2004-10-01 12:52
2004.11.07
что не так?


14-1098247284
aVast
2004-10-20 08:41
2004.11.07
Нас назвали алкоголиками...


14-1097764485
Piter
2004-10-14 18:34
2004.11.07
Оказывается ValueHost взломали


14-1098369752
wicked
2004-10-21 18:42
2004.11.07
группирование данных


1-1098863309
aap
2004-10-27 11:48
2004.11.07
Как по имени класа найти компонент.