Screen.PrimaryScreen.Bounds.Size на WPF - PullRequest
       0

Screen.PrimaryScreen.Bounds.Size на WPF

0 голосов
/ 23 декабря 2018

Я изучал программный код.Он был написан в WinForms, но я попытался написать его в WPF.Вот мой код:

Graphics graphics = null;

var w = System.Windows.SystemParameters.PrimaryScreenWidth;
var h = System.Windows.SystemParameters.PrimaryScreenHeight;

graphics.CopyFromScreen(location.X, location.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);

Visual Studio говорит: «Имя« Экран »не существует в текущем контексте».В чем проблема?

1 Ответ

0 голосов
/ 23 декабря 2018

Это очевидно, потому что Screen находится внутри System.Windows.Forms и у вас нет доступа к нему из приложения WPF .

Я полагаю, вы пытаетесь сделать снимок экрана, чтобы онmeight поможет вам в WPF:

private void TakeScreenShot()
{
    double Left = SystemParameters.VirtualScreenLeft;
    double Top = SystemParameters.VirtualScreenTop;
    double ScreenWidth = SystemParameters.VirtualScreenWidth;
    double ScreenHeight = SystemParameters.VirtualScreenHeight;

    using (System.Drawing.Bitmap bmpScreen = new System.Drawing.Bitmap((int)ScreenWidth, (int)ScreenHeight))
    {
       using (System.Drawing.Graphics graphic = System.Drawing.Graphics.FromImage(bmpScreen))
       {
            graphic.CopyFromScreen((int)Left, (int)Top, 0, 0, bmpScreen.Size);
            bmpScreen.Save(@"D:\bitmap.bmp");
            IMG.Source = BitmapToImageSource(bmpScreen); // show bitmap in IMG (Image control)
        }
    }
}


BitmapImage BitmapToImageSource(Bitmap bitmap)
{
    using (MemoryStream memory = new MemoryStream())
    {
        bitmap.Save(memory, System.Drawing.Imaging.ImageFormat.Bmp);
        memory.Position = 0;
        BitmapImage bitmapimage = new BitmapImage();
        bitmapimage.BeginInit();
        bitmapimage.StreamSource = memory;
        bitmapimage.CacheOption = BitmapCacheOption.OnLoad;
        bitmapimage.EndInit();
        return bitmapimage;
    }
}

вам может понадобиться добавить ссылку на System.Drawing.dll

Обновлен ответ на основе комментария от @Erno de Weerd.Помимо метода для отображения растрового изображения в элементе управления изображениями также добавлено

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...