Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.05.21;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.015 c
8-1135282123
The_scorpion
2005-12-22 23:08
2006.05.21
Определение углов у фигуры


1-1144736408
Sergg
2006-04-11 10:20
2006.05.21
Вызов подсказки по надобности


2-1146234817
AlexanderMS
2006-04-28 18:33
2006.05.21
Удаление нескольких выбранных элементов в ListBox


15-1145858337
Ega23
2006-04-24 09:58
2006.05.21
С Днём рождения! 22 апреля


3-1143272861
Serg1981
2006-03-25 10:47
2006.05.21
Имя поля в качестве параметра





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский