UpdateLayeredWindow с обычным холстом / текстом - PullRequest
4 голосов
/ 19 декабря 2011

Есть ли способ рисовать на форме с помощью canvas, а затем использовать окно с обновленными слоями, чтобы не форма была видимой, а текст, как прозрачная форма, показывающая только текст? если нет, то есть ли способ сделать какую-то транскулентную форму только с холстом (opengl / directx), может быть? я хотел бы рисовать с командами в верхней части всех окон.

1 Ответ

7 голосов
/ 19 декабря 2011

Вы можете установить для свойства TransparentColor формы значение «True», затем установить цвет формы на тот же цвет TransparentColorValue, и вся клиентская область формы будет прозрачной. Если используемая версия Delphi не имеет свойств TransparentColor [Value], вы можете достичь того же с помощью вызовов API:

  Color := clBlack;
  SetWindowLong(Handle, GWL_EXSTYLE,
      GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_LAYERED );
  SetLayeredWindowAttributes(Handle, 0, 255, LWA_COLORKEY);

сделает область клиента форм прозрачной. Вы можете рисовать на холсте, как обычно:

procedure TForm1.FormPaint(Sender: TObject);
begin
  Canvas.Font.Color := clWhite;
  Canvas.TextOut(0, 0, 'Text');
end;

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...