Я хотел бы напечатать изображение диалога, как если бы [alt] [Print Scrn] был использован. Предусмотрена ли в рамках этой программы программная реализация?.NET 2.0 Экран печати WinForm
ответ
Метод Graphics.CopyFromScreen(..) должен делать то, что вам нужно.
Вот хороший пример я нашел в Интернете:
http://www.geekpedia.com/tutorial181_Capturing-screenshots-using-Csharp.html
EDIT: Пример кода: (я создал его как метод расширения)
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);
}
}
Вероятно, вы можете использовать существующую DLL, которая имеет эту функциональность для Windows. Похоже, вам нужно взять некоторые ключевые команды или сделать это с помощью кнопки формы и использовать User32.dll. Так как Interop иногда может быть большая боль, я нашел ресурс здесь, которые могли бы помочь вам сделать то, что вы хотите:
http://www.cornetdesign.com/2005/04/screen-print-capture-in-c-using_08.html
Если вы действительно хотите, только диалог, использовать Control.DrawToBitmap, чтобы получить BMP изображения из него.
Отлично! Я нашел менее сжатое решение, которое также работает на http://www.dotnetcurry.com/ShowArticle.aspx?ID=303 Я изменил метод PrintScreen, заменив Screen.PrimaryScreen этим. Благодарю. – Blanthor