如何获取屏幕截图的预定义区域坐标值

本文关键字:预定义 区域 坐标 屏幕截图 何获取 获取 | 更新日期: 2023-09-27 17:57:17

可能的重复项:
.NET 等效于截图工具

我下面的代码是整个屏幕的屏幕截图,但我想截取带有预定义区域的屏幕截图。我更喜欢单击一个按钮,然后拖动并选择我要抓取 x、y、destinationX、destinationY 值的区域。有人可以给我一个提示或示例如何做到这一点吗?

bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width,
                           Screen.PrimaryScreen.Bounds.Height, 
                           PixelFormat.Format32bppArgb);
// Create a graphics object from the bitmap
gfxScreenshot = Graphics.FromImage(bmpScreenshot);
// Take the screenshot from the upper left corner to the right bottom corner                    
gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X,
                             Screen.PrimaryScreen.Bounds.Y,
                             0,
                             0,
                             Screen.PrimaryScreen.Bounds.Size,
                             CopyPixelOperation.SourceCopy);

如何获取屏幕截图的预定义区域坐标值

我并没有真正做太多的位图/图形工作,但是您能不能简单地不捕获mouse_down和mouse_up事件的 X,Y 坐标,然后在 CopyFromScreen 方法中使用它们

像这样:

 private void Form1_MouseDown(object sender, MouseEventArgs e)
    {
        startX = e.X;
        startY = e.Y;
    }
    private void Form1_MouseUp(object sender, MouseEventArgs e)
    {
        endX = e.X;
        endY = e.Y;
    }

然后,您可以做一些数学运算来确定要传输的区域的大小并将其输入到您的方法中。