Прозрачная форма Lazarus Linux gtk2 (Или просто на чистом gtk2)

Модератор: Модераторы разделов

Ism
Сообщения: 1261
Статус: Никто, по сути быдло

Прозрачная форма Lazarus Linux gtk2

Сообщение Ism »

Привет
Задачка получилась. Надо сделать круглую форму в линукс, но после гугления выяснилось, что в gtk2 сборке лазарус прозрачность не работает

Form.AlphaBlend:=true;
Form.AlphaBlendValue:=10;

работает только в qt сборках.

Вопрос такой есть ли еще какието способы сделать прозрачную или круглую форму вне зависимости от gtk2 или qt ,
Можно ли напрямую из лазаруса работать с gtk2 на худой конец ? По слухам так можно сделать форму с нужными свойствами.

Это нужно , чтоб в на рабочем висел круглый png рисунок с прозрачным фоном и реагировал на мышь как обычная форма

Lazarus 0.9.30

И вообще , как делаются красивые виджеты независимо от фреймворка ?
Спасибо сказали:
aumit
Сообщения: 28

Re: Прозрачная форма Lazarus Linux gtk2

Сообщение aumit »

WM прозрачность поддерживает?
Спасибо сказали:
Аватара пользователя
romkaromka
Сообщения: 1064
ОС: Mageia

Re: Прозрачная форма Lazarus Linux gtk2

Сообщение romkaromka »

Ism писал(а):
04.01.2012 18:57

Код: Выделить всё

Form.AlphaBlend:=true;
Form.AlphaBlendValue:=10;

работает только в qt сборках.

А у меня в gtk2 сборке эта конструкция работает, я только не знаю как сделать так чтобы TImage, помещенный на эту форму, был обычным, непрозрачным. По-умолчанию TImage становится таким же как и форма.
Консоль на мыло. Надо развивать графику.
Спасибо сказали:
Ism
Сообщения: 1261
Статус: Никто, по сути быдло

Re: Прозрачная форма Lazarus Linux gtk2

Сообщение Ism »

Нашел пример в /usr/lib/lazarus/examples/shapedcontrols/

Результат

The program 'project1' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadMatch (invalid parameter attributes)'.
(Details: serial 306 error_code 8 request_code 142 minor_code 2)
(Note to programmers: normally, X errors are reported asynchronously;
that is, you will receive the error a while after causing it.
To debug your program, run it with the --sync command line
option to change this behavior. You can then get a meaningful
backtrace from your debugger if you break on the gdk_x_error() function.)
Спасибо сказали:
Ism
Сообщения: 1261
Статус: Никто, по сути быдло

Re: Прозрачная форма Lazarus Linux gtk2

Сообщение Ism »

Теоретически можно делать снимок рабочего стола под формой и смешивать соответственно картинку и рабочий стол
как здесь http://aix.ucoz.ru/publ/12-1-0-154

Код: Выделить всё

procedure TForm1.Button2Click(Sender: TObject);
var
 Canvas:TCanvas;
 ScreenDC:HDC;
begin
 ScreenDC := GetDC(0);
 Canvas:=TCanvas.Create();
 Canvas.Handle:=ScreenDC;
 Image1.Canvas.Copyrect(Rect(0,0,Image1.Width,Image1.Height),
 Canvas, Rect(0,0,Screen.Width,Screen.Height));
 ReleaseDC(0,ScreenDC);
 Canvas.Free;
end;


но тут проблема, это можно делать по таймеру или по событию, но только как перехватывать события рабочего стола в Linux Lazarus ?
Спасибо сказали: