我正在测试Windows Mobile上的几种屏幕捕获功能实现。
使用SO,我使用OpenNetCF.Drawing库(http://blog.opennetcf.com/2009/03/11/screen-capture-in-the-compact-framework/)找到@ctacke的以下方法:
// create a bitmap and graphics objects for the capture
Drawing.Bitmap destinationBmp = new Drawing.Bitmap(Forms.Screen.PrimaryScreen.Bounds.Width, Forms.Screen.PrimaryScreen.Bounds.Height);
Drawing.Graphics g = Drawing.Graphics.FromImage(destinationBmp);
GraphicsEx gx = GraphicsEx.FromGraphics(g);
// capture the current screen
gx.CopyFromScreen(0, 0, 0, 0, Forms.Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);
// save the file
destinationBmp.Save(filename, System.Drawing.Imaging.ImageFormat.Png);
// clean house
gx.Dispose();
g.Dispose();
destinationBmp.Dispose();
我尝试在Windows Mobile 6.5 VGA模拟器上的一个简单应用程序上测试此方法并获得无人值守的结果:
保存的图片尺寸正确(480x640),但内容不是我的屏幕的完整副本:标题部分缺失,底部是"黑色填充" (丢失的像素线为黑色)。
尝试使用Windows Mobile 6模拟器,遇到了同样的问题。如何获得所有屏幕?
答案 0 :(得分:2)
我设法通过使用CopyFromScreen
的属性修改PrimaryScreen.WorkingArea
调用中的X和Y字段来找到解决方案:
gx.CopyFromScreen(-Forms.Screen.PrimaryScreen.WorkingArea.X, -Forms.Screen.PrimaryScreen.WorkingArea.Y, 0, 0, Forms.Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);
以这种方式编辑这条线,我得到了所有的屏幕。