1

フリーズしたウィンドウがあるときは知っていますが、別のウィンドウを上にドラッグすると跡が残りますか? 時々、ソリティア for Windows 3 の終わりのように見えることがあります :) 完了すると (私のスクリーンショットのように)。

このようなサーフェスを作成し、画像をキャプチャできる C# Windows (winforms/wpf) アプリケーションを作成したいのですが、どこから始めればよいか少し迷っています。

写真: ソリティアに近い感じ

4

1 に答える 1

6

WPFを使用すると簡単になります。またはVisualBrushを含む任意のコントロールからを作成できます。それができたら、フォーム全体にペイントでき、同じ効果が得られます。または、 UI要素ではなく画像を使用して実行する場合は、を使用できます。WindowFrameworkElementVisualBrushImageBrush

ペイントするときは、毎回X / Yでオフセットするだけで、それ自体が上書きされる(つまり、オーバーペイントされますか?)ので、そのように見えます。

レンダリングするをホストするためにFrozenVisualHost派生する独自のクラスを作成できます。参照:MSDN:DrawingVisualオブジェクトの使用FrameworkElementDrawingVisual

メソッドをオーバーライドするFrozenVisualHost.OnRender()と、(を介して)マウスの動きを記録したときに、「フリーズしたスナップショット」を描画できますMouseMove。必ずInvalidateVisual()メソッドを呼び出してホストコントロールを更新してください。

注意点:VisualBrushウィンドウからを作成しても、タイトルバーまたはウィンドウの境界線のクロムはキャプチャされません。それが必要な場合は、スナップショットを手動で取得する必要があります(GDI):ここで説明するようにBitmapただし、これを自分のに使用してImageBrush、同様にレンダリングを行うことができます。

于 2013-01-18T21:55:03.550 に答える