首页 > 其他分享 >wpf 双屏显示问题

wpf 双屏显示问题

时间:2024-05-22 23:19:15浏览次数:30  
标签:secondaryScreenBounds 显示 窗口 示例 Windows 双屏 System primaryScreenBounds wpf


// 在WPF中处理双屏显示问题,通常需要确保应用程序能够识别两个显示器,并在每个显示器上正确渲染内容。以下是一个简化的示例,展示如何在WPF应用程序中设置窗口,使其跨越两个显示器:


 


using System; using System.Windows; using System.Windows.Forms; public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); this.SourceInitialized += MainWindow_SourceInitialized; } private void MainWindow_SourceInitialized(object sender, EventArgs e) { IntPtr windowHandle = new WindowInteropHelper(this).Handle; Screen[] screens = Screen.AllScreens; if (screens.Length > 1) { Rectangle primaryScreenBounds = screens[0].Bounds; Rectangle secondaryScreenBounds = screens[1].Bounds; // 设置窗口的起始位置和大小,以覆盖两个屏幕 this.Left = primaryScreenBounds.Left; this.Top = primaryScreenBounds.Top; this.Width = primaryScreenBounds.Width + secondaryScreenBounds.Width; this.Height = Math.Max(primaryScreenBounds.Height, secondaryScreenBounds.Height); // 将窗口的其余部分移动到第二个屏幕 User32.SetWindowPos( windowHandle, (IntPtr)(-1), // HWND_TOPMOST secondaryScreenBounds.Left, secondaryScreenBounds.Top, secondaryScreenBounds.Width, secondaryScreenBounds.Height, 0x0001 | 0x0002 // SWP_NOMOVE | SWP_NOSIZE ); } } } // 扩展类User32包含对Win32 API的调用 public static class User32 { [System.Runtime.InteropServices.DllImport("user32.dll")] public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags); }

在这个示例中,我们首先检索所有屏幕的边界,然后调整主窗口的位置和大小,使其覆盖两个显示器。接下来,我们使用User32.SetWindowPos方法将窗口的其余部分移动到第二个屏幕。

请注意,这个示例使用了Windows API SetWindowPos来调整窗口的位置和大小,并且需要引用System.Windows.Forms命名空间下的Screen类来获取显示器信息。

确保您已经在项目中引用了System.Windows.Forms程序集,并且在XAML中定义了相应的窗口资源。这个示例假设您已经有了一个WPF窗口,并且正确设置了XAML和事件处理器。

 

标签:secondaryScreenBounds,显示,窗口,示例,Windows,双屏,System,primaryScreenBounds,wpf
From: https://www.cnblogs.com/webenh/p/18207359

相关文章

  • WPF多显示器问题 - WindowState
    标签 wpf multiple-monitors一段时间以来,我一直试图让我的WPF应用程序跨越多个监视器,并且几乎可以正常工作。当我设置以下行时,问题似乎出现了:win1.WindowState=WindowState.Maximized这会导致应用程序仅跨越主屏幕。我的代码如下:publicpartialclassApp:App......
  • C#WPF的多屏显示问题
    如果想让窗口在第二个屏幕中显示publicMainWindow(){InitializeComponent();Screen[]_screens=Screen.AllScreens;Screens=Screen.AllScreens[1];System.Drawing.Rectanglerect=s.WorkingArea;......
  • wpf 动画显示隐藏_[UWP]用Win2D和CompositionAPI实现文字的发光效果,并制作动画
    weixin_39880899于2020-12-1109:26:23发布阅读量521 收藏点赞数文章标签: wpf动画显示隐藏  1.成果 献祭了周末的晚上,成功召唤出了上面的番茄钟。正当我在感慨“不愧是Shadow大人,这难道就是传说中的五彩斑斓的黑?”“那才不是什么阴影效果,那是......
  • WPF炫酷UI及动画
        偶然看见了一张图,感觉挺好看的,花了点时间将他转化成了我代码仓库的一部分。虽然不难但也费时间。其中除了背景是百度的一张底图,其他所有内容均通过WPF的Path、Line、TextBlock、Border以及DoubleAnimation来实现。效果如下:​纯黑色背景也还蛮好看的。​   ......
  • Wpf UI框架 MaterialDesign 的使用记录
    近期公司有桌面客户端的开发需求,并且对样式和界面反馈有一定的要求,对比各种开源UI框架后确认使用MaterialDesign。1、引入框架MaterialDesignThemes,注意下对应的版本号,我用的2.6.0的。原因嘛视频教程就是这个版本。  2、App.xaml中引用样式文件注释下面的可以先不用加,后面......
  • WPF 给类库设置设计时使用的资源字典
    WPF给类库设置设计时使用的资源字典 在开发多语言版本时,我将界面显示的文本保存在语言资源zh.xaml和en.xaml中,但程序启动,加载语言资源时是外部的配置文件决定的,因此语言资源我无法添加在App.xaml文件中,而开发单个XAML界面时,设计器将会因为找不到资源文件的存在,而拿不到资......
  • WPF 实现触摸滑动功能
    自定义ScrollViewer的Touch事件--触摸上下移动ScrollViewer滚动到指定位置 12345678910111213141516171819202122232425262728double mPointY;//触摸点的Y坐标double mOffsetY;//滚动条当前位置bool mIsTouch= false;//是否触......
  • GeneralUpdate .Net5 WPF、Winfrom、控制台应用自动更新组件
    https://www.bilibili.com/video/BV1aX4y137dd/?vd_source=43d3e66cc2ad46bac54dfb0c6a3a0a23    GeneralUpdate教程2022.4.23 https://www.bilibili.com/video/BV1FT4y1Y7hV/?vd_source=43d3e66cc2ad46bac54dfb0c6a3a0a23   https://mp.weixin.qq.com/s/pR......
  • 基于WPF+Sqlite开发抽奖软件【内附源码】
    在很早之前,就想过开发一款抽奖软件,却一直没有实际去做,最近经过一段时间的准备,终于开发出了一款基于WPF+Sqlite版的抽奖软件,包括客户端和管理端。本项目主要是为了熟悉WPF开发流程,仅供学习分享使用,如有不足之处,还请指正。 涉及知识点 抽奖软件是包括客户端和管理端,在抽奖软件......
  • JS历理 点击图片在弹出层显示大图
    <!DOCTYPEhtml><html><head><metacharset="utf-8"><metaname="viewport"content="width=device-width,initial-scale=1,maximum-scale=1"><title>后台首页-ICbA后台模板-普通版演示</title><m......