gpt4 book ai didi

c# - 创建 "frozen window"效果

转载 作者:太空宇宙 更新时间:2023-11-03 19:18:19 26 4
gpt4 key购买 nike

您知道当您有一个卡住的窗口时,但是当您将另一个窗口拖到顶部时它会留下痕迹吗?有时它看起来有点像 Windows 3 纸牌的结尾 :) 当你完成时(就像我的截图)。

我想制作一个 C# windows (winforms/wpf) 应用程序来创建这样的表面并允许我捕获图像,但我有点不知道从哪里开始。

图片: Almost looks like Solitaire

最佳答案

使用 WPF 会更容易。您可以从任何控件创建一个 VisualBrush,包括 WindowFrameworkElement。一旦您有了 VisualBrush,您就可以在整个表单上绘制它,它会产生相同的效果。或者,如果您想要使用图片而不是 UI 元素,则可以使用 ImageBrush

当你绘画时,每次只需将它偏移几个 X/Y,它看起来就像覆盖(呃.. 覆盖?)本身一样!

您可以创建自己的派生自 FrameworkElement 的类 FrozenVisualHost 来承载您呈现的 DrawingVisual。请参阅:MSDN: Using DrawingVisual Objects

覆盖您的 FrozenVisualHost.OnRender() 方法将允许您在记录鼠标移动时绘制“卡住快照”(通过 MouseMove)。只需确保调用 InvalidateVisual() 方法来更新宿主控件即可。

一个警告:从窗口创建 VisualBrush 不会捕获标题栏或窗口边框镶边。如果需要,您必须手动抓取快照 (GDI):As described here .但是,您可以将该 Bitmap 用于您的 ImageBrush 并进行类似的渲染。

关于c# - 创建 "frozen window"效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14408211/

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