Привет
Задачка получилась. Надо сделать круглую форму в линукс, но после гугления выяснилось, что в gtk2 сборке лазарус прозрачность не работает
Form.AlphaBlend:=true;
Form.AlphaBlendValue:=10;
работает только в qt сборках.
Вопрос такой есть ли еще какието способы сделать прозрачную или круглую форму вне зависимости от gtk2 или qt ,
Можно ли напрямую из лазаруса работать с gtk2 на худой конец ? По слухам так можно сделать форму с нужными свойствами.
Это нужно , чтоб в на рабочем висел круглый png рисунок с прозрачным фоном и реагировал на мышь как обычная форма
Lazarus 0.9.30
И вообще , как делаются красивые виджеты независимо от фреймворка ?
Прозрачная форма Lazarus Linux gtk2 (Или просто на чистом gtk2)
Модератор: Модераторы разделов
-
Ism
- Сообщения: 1261
- Статус: Никто, по сути быдло
-
aumit
- Сообщения: 28
Re: Прозрачная форма Lazarus Linux gtk2
WM прозрачность поддерживает?
-
romkaromka
- Сообщения: 1064
- ОС: Mageia
Re: Прозрачная форма Lazarus Linux gtk2
Ism писал(а): ↑04.01.2012 18:57Код: Выделить всё
Form.AlphaBlend:=true; Form.AlphaBlendValue:=10;
работает только в qt сборках.
А у меня в gtk2 сборке эта конструкция работает, я только не знаю как сделать так чтобы TImage, помещенный на эту форму, был обычным, непрозрачным. По-умолчанию TImage становится таким же как и форма.
Консоль на мыло. Надо развивать графику.
-
Ism
- Сообщения: 1261
- Статус: Никто, по сути быдло
Re: Прозрачная форма Lazarus Linux gtk2
Нашел пример в /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
Теоретически можно делать снимок рабочего стола под формой и смешивать соответственно картинку и рабочий стол
как здесь http://aix.ucoz.ru/publ/12-1-0-154
но тут проблема, это можно делать по таймеру или по событию, но только как перехватывать события рабочего стола в Linux Lazarus ?
как здесь 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 ?