Joh*_*ohn 6 c# virtual screenshot
我正在尝试获取整个虚拟屏幕的屏幕截图.这意味着,不仅是主屏幕的图像,而且是连接到计算机的每个屏幕的图像.
有没有办法做到这一点?我尝试使用它,但它不起作用:
Bitmap b = new Bitmap(SystemInformation.VirtualScreen.Width, SystemInformation.VirtualScreen.Height);
Graphics g = Graphics.FromImage(b);
this.Size = new Size(SystemInformation.VirtualScreen.Width, SystemInformation.VirtualScreen.Height);
g.CopyFromScreen(0, 0, 0, 0, b.Size);
Run Code Online (Sandbox Code Playgroud)
的文档说:Graphics.CopyFromScreen(Int32, Int32, Int32, Int32, Size):执行的颜色数据的位块传输,对应于矩形的像素,从屏幕到Graphics的抽吸面"但是虚拟屏幕不一定是矩形.想象两个显示器以1920x1200的所以你需要做的就是像你一样创建一个位图,然后枚举你的监视器并CopyFromScreen()为每个监视器执行.
编辑:例如,如果您有两台显示器,分辨率为1280x1024的显示器位于1920x1200 左侧,则前者的坐标为(-1280,0) - (0,1024).因此,您需要执行memoryGraphics.CopyFromScreen(-1280, 0, 0, 0, s);s所在的位置Size(1280,1024).对于第二个你需要打电话memoryGraphics.CopyFromScreen(0, 0, *1280*, 0, s);,s将是Size(1920, 1200).希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
6975 次 |
| 最近记录: |