gpt4 book ai didi

c# - 在 C# 中的多个屏幕上复制 Windows 窗体

转载 作者:太空狗 更新时间:2023-10-30 01:03:37 24 4
gpt4 key购买 nike

我正在为一家汽车公司开发一个反馈系统。在计费台上,有一个双显示器设置:一个用于计费人员,一个用于提供反馈的客户。我的需要是在两个屏幕上复制一个 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();

但是,它不会反射(reflect)主屏幕上的表单。我还提到了 duplicate window问题,但它会为同一个窗体创建不同的实例,这不会镜像 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

缺少在辅助屏幕上打开表单和样式,但显示了一种可能的方法

结果是: Result

记录在案:我不知道为什么当 DrawToBitmap 在表单上调用时,它使用 Windows 7 chrome 而不是 Windows 8 chrome 复制到位图...这很有趣,说最少(我会说是一个错误)。那是在Win 8.1上运行。 (因为我在任何地方都没有看到这个,所以我在 Connect 上打开了一个错误:https://connect.microsoft.com/VisualStudio/feedback/details/1059444/in-windows-8-drawtobitmap-on-a-form-draws-the-windows-7-chrome)

关于c# - 在 C# 中的多个屏幕上复制 Windows 窗体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27541141/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com