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

Вниз

Проблема с прозрачной формой.   Найти похожие ветки 

 
49 Cent   (2006-05-02 13:57) [0]

Использую код для формы:
Brush.Style:=bsClear;

На форме есть картинка. Когда передвигаю картинку на прозрачной форме остаются следы жизнедеятельности (старые положения картинки, всякие надписи с других окон и.т.д).

Прозрачное окно крайне важно. Как бы избежать появление всяких постороних изображений. Пробовал делать Repaint, но не помогает. Подскажите как быть, а?


 
DiamondShark ©   (2006-05-02 14:18) [1]

Brush.Style:=bsClear не имеет никакого отношения к прозрачности формы.

Вот вариант для Win2000 и выше:

 TForm1 = class(TForm)
   Image1: TImage;
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 protected
   procedure CreateParams(var Params: TCreateParams); override;
 public
   { Public declarations }
 end;

implementation

{$R *.DFM}

const
WS_EX_LAYERED = $00080000;

LWA_COLORKEY = $00000001;
LWA_ALPHA = $00000002;

function SetLayeredWindowAttributes(
   hwnd: HWND;
   crKey: COLORREF;
   bAlpha: BYTE;
   dwFlags: DWORD
): BOOL; stdcall; external "user32.dll";

procedure TForm1.CreateParams(var Params: TCreateParams);
begin
 inherited;
 Params.ExStyle := Params.ExStyle or WS_EX_LAYERED;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 Color := $FEFEFE;
 SetLayeredWindowAttributes(Handle, $FEFEFE, 0, LWA_COLORKEY);
end;


 
49 Cent   (2006-05-02 14:50) [2]

Ээээ.. как бы не работает. А поисковик выдает на запрос "прозрачная форма" примерно такие варианты:
http://itby.ru/content/view/902/40/


 
DiamondShark ©   (2006-05-02 14:57) [3]

Что значит не работает? Я ж не с потолка взял, только что написал и запустил.
ОС какая?

А поисковики много разной ерунды выдают. Всему верить, что-ли?


 
antonn ©   (2006-05-02 17:36) [4]

procedure TMainForm.trans(i:byte);
const WS_EX_LAYERED = $80000;
     LWA_COLORKEY = $00000001;
     LWA_ALPHA = $00000002;
type TSetLayeredWindowAttributes = function(hWnd : HWND; crKey : DWORD;bAlpha : Byte; dwFlags : DWORD) : BOOL; stdcall;
var SetLayeredWindowAttributes : TSetLayeredWindowAttributes;
 hUser32 : HINST;
begin
  SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_LAYERED);
 hUser32 := LoadLibrary("user32.dll");
 if hUser32 <> 0 then
 begin
   try
     SetLayeredWindowAttributes := GetProcAddress(hUser32, "SetLayeredWindowAttributes");
     if Assigned(@SetLayeredWindowAttributes) then
   //цвет "511" будет автоматически "вырезать" в форме "дырки", если такое не нужно, то LWA_COLORKEY удвлить
       SetLayeredWindowAttributes(Handle, 511, Byte(i),  LWA_ALPHA or LWA_COLORKEY);
   finally                                              
     FreeLibrary(hUser32);
   end;
 end;
end;



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

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

Наверх




Память: 0.48 MB
Время: 0.092 c
2-1146204053
alkin
2006-04-28 10:00
2006.05.21
Как скопировать запись из одной таблицы DBGrid1 в другую таблицу


15-1145305263
Petr V. Abramov
2006-04-18 00:21
2006.05.21
На Рособразование подали в суд за введение ЕГЭ


3-1143784267
manevil
2006-03-31 09:51
2006.05.21
проблема с подключением к БД IB


3-1143440797
Артём
2006-03-27 10:26
2006.05.21
Помогите пожалуйста с SQL запросом


15-1146032967
Alex.
2006-04-26 10:29
2006.05.21
Конвертирование фотографий в DVD фильм.