フリーズしたウィンドウがあるときは知っていますが、別のウィンドウを上にドラッグすると跡が残りますか? 時々、ソリティア for Windows 3 の終わりのように見えることがあります :) 完了すると (私のスクリーンショットのように)。
このようなサーフェスを作成し、画像をキャプチャできる C# Windows (winforms/wpf) アプリケーションを作成したいのですが、どこから始めればよいか少し迷っています。
写真:
WPFを使用すると簡単になります。またはVisualBrush
を含む任意のコントロールからを作成できます。それができたら、フォーム全体にペイントでき、同じ効果が得られます。または、 UI要素ではなく画像を使用して実行する場合は、を使用できます。Window
FrameworkElement
VisualBrush
ImageBrush
ペイントするときは、毎回X / Yでオフセットするだけで、それ自体が上書きされる(つまり、オーバーペイントされますか?)ので、そのように見えます。
レンダリングするをホストするためにFrozenVisualHost
派生する独自のクラスを作成できます。参照:MSDN:DrawingVisualオブジェクトの使用FrameworkElement
DrawingVisual
メソッドをオーバーライドするFrozenVisualHost.OnRender()
と、(を介して)マウスの動きを記録したときに、「フリーズしたスナップショット」を描画できますMouseMove
。必ずInvalidateVisual()
メソッドを呼び出してホストコントロールを更新してください。
注意点:VisualBrush
ウィンドウからを作成しても、タイトルバーまたはウィンドウの境界線のクロムはキャプチャされません。それが必要な場合は、スナップショットを手動で取得する必要があります(GDI):ここで説明するように。Bitmap
ただし、これを自分のに使用してImageBrush
、同様にレンダリングを行うことができます。