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

Вниз

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

 
Движняк   (2003-10-12 01:10) [0]

Нужно сделать прозрачную форму, но не с помощью AlphaBlend так как программа должна работать под win 98, и не с помощью CreateRectRgn так как на форме будут анимированные гифы с прозрачным фоном. Пожалуйста, подскажите, как можно сделать реально прозрачную форму может, есть какой-нибудь компонент?


 
Zergling ©   (2003-10-12 06:25) [1]

1. Фень Юань кажися в своей книге описывал некую функцию экспортируемую из DLL для win98. Но он ее нерекамендует использовать т.к. имеется утечка памяти. Шас подсказать немогу т.к. умной книги под рукой нет.
2. Начать изучать DirectDraw :)
3. Если найдеш быстрый доступ к пикселям окна, то сюда :)
http://delphimaster.net/view/4-1060073468/


 
Yrtimd   (2003-10-12 07:08) [2]

Изображение рабочего стола копировать умеешь?
Снимок экрана, тобишь?
Ну, так и байай его на форму без бордеров, а сверху рисуй свой скин. Правда обрабатывать драг энд дроп и ресайз надо будет самостоятельно!.. ;)


 
Zergling ©   (2003-10-12 07:13) [3]

http://delphigfx.mastak.ru/libs.htm


 
Delphi5.01 ©   (2003-10-12 09:20) [4]

Nado FormAsRGN ili tipa chtoto takoe, no esli ti v Win2k ili XP to tam avtomatom rabotaet prozracnost, u formi est svoistvo. Delphi6 imeu vvidu
Jelau udachi


 
DeMoN-777 ©   (2003-10-12 13:26) [5]

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
protected
procedure RebuildWindowRgn;
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.RebuildWindowRgn;
var
FullRgn, Rgn: THandle;
ClientX, ClientY, I: Integer;
begin
// определяем относительные координаты клиенской части
ClientX:= (Width - ClientWidth) div 2;
ClientY:= Height - ClientHeight - ClientX;
// создаем регион для всей формы
FullRgn:= CreateRectRgn(0, 0, Width, Height);
// создаем регион для клиентской части формы
// и вычитаем его из FullRgn
Rgn:= CreateRectRgn(ClientX, ClientY, ClientX + ClientWidth, ClientY +ClientHeight);
CombineRgn(FullRgn, FullRgn, Rgn, rgn_Diff);
// теперь добавляем к FullRgn регионы каждого контрольного элемента
for I:= 0 to ControlCount -1 do with Controls[I] do
begin
Rgn:= CreateRectRgn(ClientX + Left, ClientY + Top, ClientX + Left +Width, ClientY + Top + Height);
CombineRgn(FullRgn, FullRgn, Rgn, rgn_Or);
end;
// устанавливаем новый регион окна
SetWindowRgn(Handle, FullRgn, True);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
HorzScrollBar.Visible:= False;
VertScrollBar.Visible:= False;
// строим новый регион
RebuildWindowRgn;
end;

end.


 
Zergling ©   (2003-10-13 08:02) [6]

Движняк (12.10.03 01:10)

Всетаки не совсем понятно, какая прозрачность имеется ввиду: окно не стандартной формы (регион) или Alpa-прозрачность?
Отвечаю по первому своему посту, пункт 1.
Из книги:
Win98/2000 для расширеннного стиля окна есть флаг WS_EX_LAYERED

WM_CREATE:
begin
SetWindowLong(WC_HWND, GWL_EXSTYLE, GetWindowLong(WC_HWND, GWL_EXSTYLE) or WS_EX_LAYERED);
SetLayeredWindowAttributes(WC_HWND, RGB(0, 0, 1), $C0, LWA_ALPHA or LWA_COLORKEY);
end;

У меня не работает. Говорит, что в USER32.DLL нет SetLayeredWindowAttributes, посмсотрел с помощью IDA и впрямь нет :) (видать ошибся Фень Юань), хотя по MSDN:

The SetLayeredWindowAttributes function sets the opacity and transparency color key of a layered window.

Header Declared in Winuser.h, include Windows.h
Import library User32.lib
Minimum operating systems Included in Windows 95, Windows NT 3.1



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

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

Наверх




Память: 0.48 MB
Время: 0.042 c
1-74148
Zew
2003-10-09 20:27
2003.10.23
Слайд-шоу


14-74398
Zhouck
2003-10-06 12:39
2003.10.23
Фигня с телетекстом


1-74194
Alibaba
2003-10-03 18:10
2003.10.23
Послать сообщение TScrollBox на прокрутку


1-74173
Lam
2003-10-10 14:02
2003.10.23
File


3-74035
Карелин Артем
2003-09-30 13:47
2003.10.23
300 коннектов из 1 программы :(