如何使用copyfromscreen获取屏幕截图的一部分

时间:2017-06-11 00:58:38

标签: c# screenshot

我正在尝试创建一个小应用程序,允许我剪切一段完整的屏幕截图。现在我创建一个新的位图并用鼠标坐标指定它。

        Bitmap bitmap = new Bitmap(e.X, e.Y);
        Graphics g = Graphics.FromImage(bitmap);
        g.CopyFromScreen(0, 0, 0, 0, Screen.PrimaryScreen.Bounds.Size);
        pictureBox1.Image = bitmap;
        bitmap.Save(@"C:\Users\asus\Desktop\test c#\test.png");

当我使用此代码并点击此处显示的屏幕http://prntscr.com/ficotc时 我得到了那件作品的截图,虽然我从左上角开始,但效果很好。如果我想从其他地方开始,例如在屏幕中间我改变它。

       g.CopyFromScreen(0, 0, 0, 0, Screen.PrimaryScreen.Bounds.Size);

这样的事情

       g.CopyFromScreen(100, 100, 0, 0, Screen.PrimaryScreen.Bounds.Size);

然后它从顶部和左侧开始100像素,但最后还有100个像素在右侧和底部,这使得图片变得更大,然后我点击这是我将收到的输出,你可以看到哪里我点击了但它在右侧和底部显示更多然后我想要它。 http://prntscr.com/ficq86

我也试过更改其他2个参数,但没有运气我不知道它能做什么可以告诉我我做错了什么?

2 个答案:

答案 0 :(得分:0)

根据docs,最后一个参数是要捕获的矩形的大小。尽量减小它的大小。

 var size = new Size(Screen.PrimaryScreen.Bounds.Size.Height - 100,
                      Screen.PrimaryScreen.Bounds.Size.Width -100);
 g.CopyFromScreen(100, 100, 0, 0, size);

答案 1 :(得分:0)

g.CopyFromScreen(100,100,0,0,size); 第一个参数代表起始点x,第二个参数代表起始点y,第三个参数代表目的地x,第四个参数代表目的地y 概要 第一个和第二个参数代表要复制的空间的起点,第三个和第四个参数代表要复制的空间的终点