我正在为一家汽车公司开发反馈系统。在计费台上,有一个双显示器设置:一个用于计费人,一个用于提供反馈的客户。我的需要是在两个屏幕上都将Windows窗体复制为镜像,以便帐单人员可以看到客户给出的反馈。
我正在使用下面的代码在辅助屏幕上显示:
Screen[] sc;
Form f = new Form();
sc = Screen.AllScreens;
f.FormBorderStyle = FormBorderStyle.None;
f.Left = sc[1].Bounds.Left;
f.Top = sc[1].Bounds.Top;
f.Height = sc[1].Bounds.Height;
f.Width = sc[1].Bounds.Width;
f.StartPosition = FormStartPosition.Manual;
f.Show();
但是,它不会在主屏幕上镜像该表单。我还提到了重复窗口问题,但是它将为同一表单创建不同的实例,而不会镜像Windows表单。如何在两个屏幕上镜像?
一种可行的方法是捕获将数据输入到计时器上的图像的表单(使用合理的延迟,使其“几乎实时”)并PictureBox
在辅助表单上使用它。要将表单捕获为图像,请执行以下操作:
Bitmap bmp = new Bitmap(form.Width, form.Height);
form.DrawToBitmap(bmp, new Rectangle(Point.Empty, bmp.Size));
然后,您将bmp
图像分配给PictureBox
另一种形式的。
我做了一个快速的示例项目,并将其上传到这里:https : //www.dropbox.com/s/pjuk3zvpbglhodb/SOTestMirror.zip?dl=0
缺少在辅助屏幕和样式上打开表格的方法,但显示了一种可行的方法
结果是:
记录:我不知道为什么在DrawToBitmap
窗体上使用Windows 7 chrome而不是Windows 8 chrome时将其复制到位图上,至少可以这样说(很有趣,我会说一个bug)。 。那是在Win 8.1上运行的。(由于我从未在任何地方看到此内容,因此我在Connect上打开了一个错误:https : //connect.microsoft.com/VisualStudio/feedback/details/1059444/in-windows-8-drawtobitmap-on-a- form-draws-the-windows-7-chrome)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句