【问题标题】:C#: how to take a screenshot of a portion of screenC#:如何截取屏幕的一部分
【发布时间】:2010-07-22 07:19:45
【问题描述】:

喜欢

TakeScreenshot(new Rectangle(0,0,100,100), "output.jpg");

【问题讨论】:

  • 您需要指定是 WinForms、WPF 还是 Silverlight。
  • 我正在尝试在类库中创建此方法

标签: c# .net screenshot


【解决方案1】:

使用以下内容:

Rectangle rect = new Rectangle(0, 0, 100, 100);
Bitmap bmp = new Bitmap(rect.Width, rect.Height, PixelFormat.Format32bppArgb);
Graphics g = Graphics.FromImage(bmp);
g.CopyFromScreen(rect.Left, rect.Top, 0, 0, bmp.Size, CopyPixelOperation.SourceCopy);
bmp.Save(fileName, ImageFormat.Jpeg);

【讨论】:

  • 什么是“PixelFormat.Format32bppArgb”?
  • PixelFormat.Format32bppArgb 指定格式为每像素 32 位;每个 8 位用于 alpha、红色、绿色和蓝色分量。
  • 谢谢!这是我所需要的,所以我接受这个答案:)
  • 这是更可取的解决方案,因为它仅取决于矩形的坐标 - 而不是主屏幕的边界。
【解决方案2】:

这是捕获屏幕的代码。将值更改为您需要的大小。

 Bitmap printscreen = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);  

 Graphics graphics = Graphics.FromImage(printscreen as Image);  

 graphics.CopyFromScreen(0, 0, 0, 0, printscreen.Size);  

 printscreen.Save(@"C:\printscreen.jpg", ImageFormat.Jpeg);

或者制作方法,它会像这样返回你捕获的图像:

Image CaptureScreen(int sourceX, int sourceY, int destX, int destY, 
            Size regionSize)
{
    Bitmap bmp = new Bitmap(regionSize.Width, regionSize.Height);
    Graphics g = Graphics.FromImage(bmp);
    g.CopyFromScreen(sourceX, sourceY, destX, destY, regionSize);
    return bmp;
}
 ......
 // call 
 Image image = CaptureScreen(sourceX, sourceY,  destX,  destY, regionSize);
 image.Save(@"C:\Somewhere\screen.jpg);

【讨论】:

    【解决方案3】:

    使用Graphics.CopyFromScreen 方法。谷歌出现this tutorial

    【讨论】:

      【解决方案4】:

      您检查过Graphics.CopyFromScreen 方法吗?

      【讨论】:

        猜你喜欢
        • 2011-03-15
        • 2019-02-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-20
        • 2015-03-14
        相关资源
        最近更新 更多