2009-06-17 4 views
0

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

ответ

8

Метод 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); 
    } 
} 
+0

Отлично! Я нашел менее сжатое решение, которое также работает на http://www.dotnetcurry.com/ShowArticle.aspx?ID=303 Я изменил метод PrintScreen, заменив Screen.PrimaryScreen этим. Благодарю. – Blanthor

0

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

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

0

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