我想打印一个对话框的图像,就像使用[alt] [Print Scrn]一样。框架是否允许以编程方式完成此操作?
答案 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图像。