我想用左上角P,宽度w和高度h截屏,然后保存。
我尝试过了。 Take screenshot at specified coordinates。不起作用,或者我不知道如何使其起作用。
然后我尝试保存剪贴板,但也没有用。
SendKeys.SendWait("%{PRTSC}");
Bitmap bp = new Bitmap(Clipboard.GetImage());
bp.Save(@"C:\Users\hasht\spamImages\work.png", ImageFormat.Jpeg);
我也尝试过
private Bitmap bitmap;
private Graphics graph;
...
graph.CopyFromScreen(new Point(1600, 0), new Point(1920, 0), new Size(320, 300));
Bitmap bp = new Bitmap(320, 300, graph);
bp.Save(@"C:\Users\hasht\spamImages\work.png", ImageFormat.Jpeg);
,但是图形为空,因为我从未创建它。原来您无法创建图形对象。我该如何截取左上角P,宽度w和高度h的屏幕截图,然后保存它?
答案 0 :(得分:1)
尝试:
Bitmap printscreen = new Bitmap(150, 150);
Graphics graphics = Graphics.FromImage(printscreen as Image);
graphics.CopyFromScreen(Point1, Point2, 0, 0, printscreen.Size);
printscreen.Save(PATH_FILENAME, ImageFormat.Jpeg);
在keylogger project上工作正常
答案 1 :(得分:1)
我把所有东西都放进了函数中。
/// <summary>
/// Takes a screenshot of the specified section of the screen.
/// </summary>
public void Screenshot(string filename, ImageFormat imageFormat, int width, int height, int sourceX, int sourceY, int destX, int destY)
{
using (var bm = new Bitmap(width, height))
{
using (var gr = Graphics.FromImage(bm))
{
gr.CopyFromScreen(sourceX, sourceY, destX, destY, bm.Size);
bm.Save(filename, imageFormat);
}
}
}
一个示例,从屏幕的左上角开始拍摄500x500的屏幕截图:
Screenshot(@"c:\temp\test.jpg", ImageFormat.Jpeg, 500, 500, 0, 0, 0, 0);
它可能需要在c#类的顶部进行以下导入:
using System.Drawing;
using System.Drawing.Imaging;
代码中的图形对象为空,因为它从未被初始化。 “ var gr = Graphics.FromImage(bm);”在我的示例中,line是对其进行初始化的东西(提供了要写入的位图)。
我将Bitmap和Graphics对象与“ using”语句一起使用,因为完成后需要在它们上调用Dispose方法(即使有例外,using语句也会自动执行)。 / p>