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

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Ism
энтузиаст
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

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

Сообщение Ism »

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

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

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

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

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

Lazarus 0.9.30
Аватара пользователя
WAYFARER
энтузиаст
Сообщения: 567
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Сообщение WAYFARER »

Ism писал(а):Можно ли напрямую из лазаруса работать с gtk2 на худой конец

Можно, посмотрите примеры в исходниках fpc
(fpc\2.4.4\source\packages\gtk2\examples\)
Ism
энтузиаст
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Сообщение Ism »

Кстати , а в msegui прозрачность или круглость можно сделать ?
Ism
энтузиаст
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Сообщение 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 ?
Ответить