Сделать скриншот всплывающего окна wpf

Я пытаюсь сделать снимок экрана приложения, написанного на WPF, но приложение не захватывается, должен ли я использовать специальный инструмент для создания снимка экрана?


person Coolweb    schedule 17.08.2009    source источник


Ответы (3)


Вы можете использовать RenderTargetBitmap для создания изображение из вашего элемента управления WPF.

    public const int IMAGE_DPI = 96;

    public Image GenerateImage(T control)
        where T : Control, new()
    {
        Size size = RetrieveDesiredSize(control);

        Rect rect = new Rect(0, 0, size.Width, size.Height);

        RenderTargetBitmap rtb = new RenderTargetBitmap((int)size.Width, (int)size.Height, IMAGE_DPI, IMAGE_DPI, PixelFormats.Pbgra32);

        control.Arrange(rect); //Let the control arrange itself inside your Rectangle
        rtb.Render(control); //Render the control on the RenderTargetBitmap

        //Now encode and convert to a gdi+ Image object
        PngBitmapEncoder png = new PngBitmapEncoder();
        png.Frames.Add(BitmapFrame.Create(rtb));
        using (MemoryStream stream = new MemoryStream())
        {
            png.Save(stream);
            return Image.FromStream(stream);
        }
    }

    private Size RetrieveDesiredSize(T control)
    {
        if (Equals(control.Width, double.NaN) || Equals(control.Height, double.NaN))
        {
            //Make sure the control has measured first:
            control.Measure(new Size(double.MaxValue, double.MaxValue));

            return control.DesiredSize;
        }

        return new Size(control.Width, control.Height);
    }

Обратите внимание, что это создаст изображение PNG;) Если вы хотите сохранить его как JPEG, я предлагаю вам использовать другой кодировщик :)

Image image = GenerateImage(gridControl);
image.Save("mygrid.png");
person Arcturus    schedule 17.08.2009

Вы можете просто нажать кнопку PrtScr (Windows скопирует все изображение рабочего стола в буфер), затем вставить его в Power Point и обрезать, если хотите.

person Anna Krykora    schedule 26.01.2012

У меня такая же проблема, мне нужно сделать скриншоты, чтобы задокументировать мои тесты, но, похоже, я не могу туда добраться.

Рассматриваемое окно представляет собой модальное окно без полей с закругленными углами / разрешенной прозрачностью. Вот мой отчет:

  • Инструмент снимков экрана HP Quality Center не распознает его как окно и поэтому делает снимки экрана, как если бы этого окна не было.
  • SnagIt использует комбинацию клавиш для входа в режим захвата. После удара всплывающее окно исчезает. Он снова появляется после окончания захвата.
  • Стандартный захват Windows работает нормально (Alt + Prt Scr) и захватывает окно так, как оно должно было быть захвачено.

Следующее, что я попробовал, это захватить окно с открытым выпадающим списком. Ни один из упомянутых выше подходов не работает (последний подход захватывает окно так же, как и раньше, без раскрывающегося списка).

Насколько я правильно понял весь разговор, единственное, что вы можете сделать, это реализовать это в приложениях...

person Sebastian Edelmeier    schedule 09.03.2011