.NET 2.0 WinForm打印屏幕

时间:2009-06-17 16:44:24

标签: c# .net winforms printing

我想打印一个对话框的图像,就像使用[alt] [Print Scrn]一样。框架是否允许以编程方式完成此操作?

3 个答案:

答案 0 :(得分:8)

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);
    }
}

答案 1 :(得分:0)

您可能要做的是使用具有Windows功能的现有DLL。看起来您需要获取某些键命令或使用表单按钮执行此操作,并使用User32.dll。由于互操作有时会很麻烦,我在这里找到了一个可以帮助你做你想做的事情的资源:

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

答案 2 :(得分:0)

如果您真的只想要对话框,请使用Control.DrawToBitmap从中获取BMP图像。