예제 #1
0
            // コンストラクタ
            public ClickWindow(ScreenshotProvider sp, Rectangle virtualDisplayRectangle, AfterAction aa)
            {
                // 仕方ないね
                ScreenshotProvider = sp;
                vdr = virtualDisplayRectangle;
                // クリック完了時にGUIに反映するための細工
                this.aa = aa;
                // 表示用に仮想スクリーンのビットマップを生成する
                vdb = sp.getVirtualDisplayBitmap(vdr);
                // 画像を表示するためImageコントロールを用意する
                // (http://bacchus.ivory.ne.jp/gin/post-979/)
                var ScreenshotImage = new System.Windows.Controls.Image();
                var hbitmap         = vdb.GetHbitmap();

                ScreenshotImage.Source = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
                    hbitmap, IntPtr.Zero, Int32Rect.Empty,
                    System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
                NativeMethods.DeleteObject(hbitmap);
                ScreenshotImage.Height = vdr.Height;
                ScreenshotImage.Width  = vdr.Width;
                // Gridを作成し、Imageコントロールを乗せる
                var grid = new System.Windows.Controls.Grid();

                grid.Children.Add(ScreenshotImage);
                // ウィンドウについての設定を行う
                // 縁無しに設定する
                // (http://5000164.jp/2014-03-wpf_practice_1/)
                WindowStyle        = WindowStyle.None;
                AllowsTransparency = true;
                // 表示座標を決める
                Left   = virtualDisplayRectangle.Left;
                Top    = virtualDisplayRectangle.Top;
                Height = virtualDisplayRectangle.Height;
                Width  = virtualDisplayRectangle.Width;
                // コンテンツを設定する
                Content = grid;
                // イベントを設定する
                MouseDown += ClickWindow_Click;
                KeyDown   += ClickWindow_Key;
            }
예제 #2
0
 private void GetPositionMenu_Click(object sender, RoutedEventArgs e)
 {
     sp = new ScreenshotProvider(new AfterAction(getPosition), GetBackgroundColor());
 }