您知道当您有一个窗口被冻结时,但是当您将另一个窗口拖到顶部时它会留下痕迹?有时它看起来有点像 Windows 3 纸牌的结束 :) 当你完成时(如我的屏幕截图)。
我想制作一个 C# windows (winforms/wpf) 应用程序来创建这样的表面并允许我捕获图像,但我有点不知从何开始。
图片:
使用WPF会更容易。您可以从任何控件创建 a VisualBrush
,包括 aWindow
或FrameworkElement
。一旦你有了它VisualBrush
,你可以在你的表单上涂上它,它会产生同样的效果。ImageBrush
或者,如果你想用图片而不是 UI 元素来做,你可以使用。
当你绘画时,每次只需将它偏移几个 X/Y,它就会看起来就像那样,因为它会覆盖(er.. overpaints?)自己!
您可以创建自己的FrozenVisualHost
派生类,FrameworkElement
以托管DrawingVisual
您呈现的 a。请参阅:MSDN:使用 DrawingVisual 对象
覆盖您的FrozenVisualHost.OnRender()
方法将允许您在记录鼠标移动时绘制“冻结快照”(通过MouseMove
)。只需确保调用该InvalidateVisual()
方法来更新主机控件即可。
一个警告:VisualBrush
从窗口创建一个不会捕获标题栏或窗口边框镶边。如果需要,您必须手动获取快照 (GDI):如此处所述。但是,您可以将其Bitmap
用于您的ImageBrush
并进行类似的渲染。