gpt4 book ai didi

c# - 在 .NET 中实现粘性覆盖

转载 作者:太空宇宙 更新时间:2023-11-03 11:56:04 24 4
gpt4 key购买 nike

我正在寻找一种很好的方法来呈现覆盖在非我自己所有的 native Windows 窗体上,最好使用可用于 .NET 的库(WinForms、GTK#、...)。准确地说,我想在窗口的给定位置显示一些标签或文本框。

Device Context & System.Drawing:我目前正在做的是直接在其他窗口的设备上下文上绘图,这会导致闪烁,因为其他应用程序的某些部分会以不可预测的间隔重新绘制。因此,我必须使用 hook magic 来捕捉它的 WM_PAINT 事件,但实际上这并没有我想要的那么深,除非没有更简单的方法。

带有可见子标签的透明窗口覆盖: 我尝试的另一种技术是创建具有其他窗口大小的 Windows.Forms.Form,使用 TransparencyKey 使仅子标签可见。这似乎很难得到正确的,因为我不希望窗口是最上面的窗口,而只是在外部窗口上方的 one Z 级别。好处是,我可以向它添加更多行为,因为我实际上可以处理点击事件等。

您将如何实现/处理上述两种技术中的问题?

最佳答案

一定要使用透明窗口方法,因为它应该更容易实现。创建透明表单非常容易。您已经知道如何使用 TransparenyKey 使背景不被绘制。同时从窗口中删除边框并删除最小/最大/关闭按钮,这样您就不会显示任何镶边。

将您的窗口创建为您感兴趣的窗口所拥有的,它将始终位于目标的顶部并且像无模式对话框一样运行。 IE。它仅在所属窗口可见时可见。

关于c# - 在 .NET 中实现粘性覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/434065/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com