예제 #1
0
        private void ButtonSendScreenshot_Click(object sender, RoutedEventArgs e)
        {
            using (var screenshot = Screenshot.CaptureFullscreen())
                using (var surface = new RectangleRegion())
                {
                    surface.SurfaceImage = screenshot;
                    surface.Prepare();
                    surface.ShowDialog();

                    using (var img = surface.GetRegionImage())
                    {
                        if (img == null)
                        {
                            return;
                        }

                        var stream = new MemoryStream();
                        img.Save(stream, ImageFormat.Png);

                        var transfer = ProfileManager.Instance.TransferManager.SendFile(Context.Friend.ChatNumber, stream, "screenshot.png");
                        if (transfer == null)
                        {
                            MessageBox.Show("Could not send screenshot.", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                            return;
                        }

                        (Context.Friend.ConversationView as ConversationViewModel).AddTransfer(transfer);
                    }
                }
        }
예제 #2
0
        private void fullScreenshotToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Image img = m_ScreenshotSettings.CaptureFullscreen();

            if (img != null)
            {
                ScreenshotDone(img);
            }
        }
예제 #3
0
        /// <summary>
        /// 获取全屏截图
        /// </summary>
        /// <returns></returns>
        public static Image GetFullScreen()
        {
            Screenshot screenshot = new Screenshot()
            {
                CaptureCursor           = false,
                CaptureClientArea       = false,
                RemoveOutsideScreenArea = true,
                CaptureShadow           = false,
                ShadowOffset            = 0,
                AutoHideTaskbar         = true
            };
            Image img = screenshot.CaptureFullscreen();

            return(img);
        }
예제 #4
0
        private void CaptureRegion(Surface surface, bool autoHideForm = true)
        {
            Capture(() =>
            {
                Image img        = null;
                Image screenshot = Screenshot.CaptureFullscreen();

                surface.Config       = Program.Settings.SurfaceOptions;
                surface.SurfaceImage = screenshot;
                surface.Prepare();

                if (surface.ShowDialog() == DialogResult.OK)
                {
                    img = surface.GetRegionImage();
                }

                surface.Dispose();

                return(img);
            }, autoHideForm);
        }
        private void GlobalHotkeyServiceOnHotkeyPress(Hotkey hotkey)
        {
            try
            {
                if (_currentlyRunningGame == null && _settings.OnlyGameScreenshots)
                {
                    return;
                }

                Bitmap bitmap;
                string region;

                if (hotkey == _settings.CaptureFullscreenHotkey)
                {
                    bitmap = Screenshot.CaptureFullscreen();
                    region = "fullscreen";
                }
                else if (hotkey == _settings.CaptureActiveMonitorHotkey)
                {
                    bitmap = Screenshot.CaptureActiveMonitor();
                    region = "active monitor";
                }
                else if (hotkey == _settings.CaptureActiveWindowHotkey)
                {
                    bitmap = Screenshot.CaptureActiveWindow();
                    region = "active window";
                }
                else
                {
                    _logger.Error($"Unknown hotkey: {hotkey.DebugString()}");
                    return;
                }

                if (bitmap == null)
                {
                    _logger.Error($"Unable to capture {region} with hotkey {hotkey.DebugString()}");
                    return;
                }

                var fileName = DateTime.Now.ToString("yyyy-MM-ddThh-mm-ss");
                var folder   = _currentlyRunningGame == null
                    ? _settings.ScreenshotsPath
                    : Path.Combine(_settings.ScreenshotsPath, _currentlyRunningGame.GameId);

                if (!Directory.Exists(folder))
                {
                    Directory.CreateDirectory(folder);
                }

                var path = Path.Combine(folder, fileName + ".png");

                bitmap.Save(path, ImageFormat.Png);
                //bitmap.Dispose();

                _playniteAPI.Notifications.Add(new NotificationMessage(fileName, $"Saved new screenshot to {path}", NotificationType.Info,
                                                                       () =>
                {
                    try
                    {
                        Process.Start(path);
                    }
                    catch (Exception inner)
                    {
                        _logger.Error(inner, $"Exception while opening {path}");
                    }
                }));
            }
            catch (Exception e)
            {
                _logger.Error(e, $"Exception while handling hotkey {hotkey.DebugString()}\n");
            }
        }