.NET 2.0 WinForm печать экрана - PullRequest
0 голосов
/ 17 июня 2009

Я хотел бы напечатать изображение диалога, как если бы использовались [alt] [Print Scrn]. Позволяет ли фреймворк делать это программно?

Ответы [ 3 ]

8 голосов
/ 17 июня 2009

Метод Graphics.CopyFromScreen (..) должен делать то, что вам нужно.

Вот хороший пример, который я нашел в Интернете:

http://www.geekpedia.com/tutorial181_Capturing-screenshots-using-Csharp.html

РЕДАКТИРОВАТЬ: Пример кода: (я создал его как метод расширения)

public static class FormExtensions
{
    public static void SaveAsImage(this Form form, string fileName, ImageFormat format)
    {
        var image = new Bitmap(form.Width, form.Height);
        using (Graphics g = Graphics.FromImage(image))
        {
            g.CopyFromScreen(form.Location, new Point(0, 0), form.Size);
        }
        image.Save(fileName, format);
    }
}

можно использовать:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        this.SaveAsImage("foo.bmp", ImageFormat.Bmp);
    }
}
0 голосов
/ 17 июня 2009

Если вам действительно нужен только диалог, используйте Control.DrawToBitmap , чтобы получить изображение BMP из него.

0 голосов
/ 17 июня 2009

Что вы, вероятно, могли бы сделать, это использовать существующую библиотеку DLL, которая имеет эту функциональность для Windows. Похоже, вам нужно захватить некоторые ключевые команды или сделать это с помощью кнопки формы и использовать User32.dll. Поскольку взаимодействие может иногда вызывать большие трудности, я нашел здесь ресурс, который может помочь вам сделать то, что вы хотите:

http://www.cornetdesign.com/2005/04/screen-print-capture-in-c-using_08.html

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