Windowのキャプチャ(WinForms,WPF)

現在、台風19号が近畿圏に再接近中…。今回は息抜きに、WindowsFormsとWPFそれぞれについてwindowのキャプチャ方法を見ておきます。WPFは結構苦労しているような。

 

1.WindowsFormsの場合

ボタン押下でFormのキャプチャをするような関数は以下のような感じになります。

 Form1.cs

namespace WindowsFormsCapture
{
    using System;
    using System.Drawing;
    using System.Windows.Forms;
    using System.Drawing.Imaging;
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void buttonCapture_Click(object sender, EventArgs e)
        {
            using(Bitmap image = new Bitmap(Width,Height))
            using(Graphics graphics = Graphics.FromImage(image))
            {
                graphics.CopyFromScreen(Location, Point.Empty, image.Size);
                image.Save("Capture.bmp", ImageFormat.Bmp);
            }
        }
    }
}

実際のキャプチャ画像はこちら。

Capture

 

2.WPFの場合

WPFの場合も基本は同じ、ウィンドウの位置,サイズの取得方法が変わるだけです。

MainWindow.xaml.cs

namespace WpfCapture
{
    using System.Windows;
    using System.Windows.Media;
    using System.Drawing;
    using System.Drawing.Imaging;
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            var brush = new VisualBrush(this);
            using (Bitmap image = new Bitmap((int)ActualWidth, (int)ActualHeight))
            using (Graphics graphics = Graphics.FromImage(image))
            {
                graphics.CopyFromScreen(new System.Drawing.Point((int)Left, (int)Top), System.Drawing.Point.Empty, image.Size);
                image.Save("Capture.bmp", ImageFormat.Bmp);
            }
        }
    }
}

こちらも蛇足ながらキャプチャ画像はこちら。

Capture

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中