1

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

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

图片: 几乎看起来像纸牌

4

1 回答 1

6

使用WPF会更容易。您可以从任何控件创建 a VisualBrush,包括 aWindowFrameworkElement。一旦你有了它VisualBrush,你可以在你的表单上涂上它,它会产生同样的效果。ImageBrush或者,如果你想用图片而不是 UI 元素来做,你可以使用。

当你绘画时,每次只需将它偏移几个 X/Y,它就会看起来就像那样,因为它会覆盖(er.. overpaints?)自己!

您可以创建自己的FrozenVisualHost派生类,FrameworkElement以托管DrawingVisual您呈现的 a。请参阅:MSDN:使用 DrawingVisual 对象

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

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

于 2013-01-18T21:55:03.550 回答