Форум: "Начинающим";
Текущий архив: 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