使用普通画布/文本输出更新LayeredWindow

发布于 2024-12-21 17:45:24 字数 142 浏览 0 评论 0原文

有没有一种方法可以使用画布在表单上绘图,然后使用 updatelayeredwindow,这样表单就不可见,但文本可见,就像只显示文本的半透明表单一样?如果没有,那么有没有办法只用画布(opengl/directx)制作某种半透明形式?我想用所有窗口顶部的命令进行绘图。

Is there a way to draw on form with canvas and then use the updatelayeredwindow so not the form will be visible but the text, like a transculent form showing only text? if not, then is there a way to make some sort of transculent form with only the canvas (opengl/directx) maybe? i would like to draw with commands on the top of all windows.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

末蓝 2024-12-28 17:45:24

您可以将表单的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;

当然,您也可以在表单上放置一个标签,其字体颜色与透明颜色不同。

You can set the TransparentColor property of the form to 'True', then set the form color to the same color of TransparentColorValue, and all of the form's client area will be transparent. If the Delphi version you use does not have the 'TransparentColor[Value]' properties you can achieve the same with API calls:

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

will make the forms client area transparent. You can paint on the canvas as you normally would:

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

Of course you can also put a label on the form having a font color anything different then the transparent color.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文