|
分類:[.NET 全般]
開発環境:VS2019、.NET5、WPF
お世話になっております。
3秒おきにスクリーンショットを撮るツールを作っており難航しています。
WinFormならGraphicsクラスのCopyFromScreenメソッドで画面のスクショを撮
れますが――
WPF(NET5)の標準クラスで、同じ機能を実現できますでしょうか?
(WPFの勉強がてらWinFormで作ったツールを、WPFで作り直しています)
できればNugetでライブラリを使わずに行えればと考えています。
Windowコントロールのスクショを撮るサンプルはネットに多くあり、下記のコ
ードで検証しています。
このコードを改良して画面のスクショ撮れないものかと考えております。
以上よろしくお願いします。
>Windowのコントロールをスクショするサンプル
// targetはVisual型です。
Rect bounds = VisualTreeHelper.GetDescendantBounds(target);
var bmp = new RenderTargetBitmap((Int32)bounds.Width, (Int32)bounds.Height, 96, 96, PixelFormats.Pbgra32);
DrawingVisual dv = new DrawingVisual();
using (DrawingContext context = dv.RenderOpen())
{
VisualBrush brush = new VisualBrush(target);
context.DrawRectangle(brush, null, new Rect(new Point(), bounds.Size));
}
bmp.Render(dv);
var encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bmp));
using (Stream stream = File.Create(fileName))
{
encoder.Save(stream);
}
|