c#如何执行与OneNote Windows类似的屏幕剪辑+;S快捷键

c#如何执行与OneNote Windows类似的屏幕剪辑+;S快捷键,c#,screen,overlay,onenote,C#,Screen,Overlay,Onenote,我想实现一个类似于的屏幕剪辑功能。基本上,它可以在整个屏幕上绘制一个半透明的覆盖层,也可以冻结屏幕,以便用户可以剪辑部分屏幕 我做了一些研究,似乎最简单的方法是创建一个具有整个屏幕大小的半透明顶部表单,然后在此表单上执行剪辑。然而,这种方法是缓慢的。我看到了一些关于为绘图覆盖使用Direct3D挂钩的其他建议,但这可能太复杂了,而且我不确定它对于不同的Direct3D版本有多稳定。你知道OneNote是如何做到的吗?我想与其在屏幕上创建透明层,不如抓取整个屏幕的截图,使其成为全屏。因此,用户在静

我想实现一个类似于的屏幕剪辑功能。基本上,它可以在整个屏幕上绘制一个半透明的覆盖层,也可以冻结屏幕,以便用户可以剪辑部分屏幕


我做了一些研究,似乎最简单的方法是创建一个具有整个屏幕大小的半透明顶部表单,然后在此表单上执行剪辑。然而,这种方法是缓慢的。我看到了一些关于为绘图覆盖使用Direct3D挂钩的其他建议,但这可能太复杂了,而且我不确定它对于不同的Direct3D版本有多稳定。你知道OneNote是如何做到的吗?

我想与其在屏幕上创建透明层,不如抓取整个屏幕的截图,使其成为全屏。因此,用户在静态图像上绘制,而不是半透明层。因为它已经是一个截图了,所以它已经被冻结了。我认为他们就是这样做的,我怀疑应用程序是否可以简单地冻结屏幕,他们会为屏幕拍照并用它覆盖您的屏幕,因此它就像是冻结了一样。

感谢您的建议,我以前尝试过这种方法,但与OneNote相比,它似乎仍然很慢。我所说的“冻结屏幕”并不是说屏幕被冻结了。我猜OneNote以某种方式通过Direct3D访问了绘图缓冲区,并向绘图表面注入了一个恒定的图像缓冲区(在本例中,将是屏幕截图)。也许这会使它更快,但我不想使用Direct3D,除非这是我最后的选择。