日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

WPF多屏显示

發(fā)布時間:2023/12/13 综合教程 32 生活家
生活随笔 收集整理的這篇文章主要介紹了 WPF多屏显示 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄WPF多屏顯示實現(xiàn)代碼實現(xiàn)原理注意事項

WPF多屏顯示

實現(xiàn)代碼

需要在分屏顯示的窗體

<Window x:Class="WpfClient.Tools.FrmSubScreen"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:local="clr-namespace:WpfClient.Tools"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        Title="FrmSubScreen"
        Width="800"
        Height="450"
        AllowsTransparency="True"
        Background="Transparent"
        ResizeMode="NoResize"
        ShowInTaskbar="False"
        Topmost="True"
        WindowStartupLocation="CenterScreen"
        WindowStyle="None"
        mc:Ignorable="d">
    <Grid>
        <Image Grid.Column="1"       Source="https://img.alicdn.com/imgextra/i2/4179999320/O1CN01CIIi2C2IibyZZrMHw_!!0-item_pic.jpg_430x430q90.jpg" Stretch="Fill" />
    </Grid>
</Window>

需要在分屏顯示的窗體后臺代碼

public partial class FrmSubScreen : Window
    {
        public FrmSubScreen()
        {
            InitializeComponent();
            this.Loaded += (s, e) => 
            {
                foreach (Screen scr in Screen.AllScreens)
                {
                    if (!scr.Primary)
                    {
                        //設(shè)置窗體位置
                        WindowStartupLocation = WindowStartupLocation.Manual;
                        Left = scr.WorkingArea.Left;
                        Top = scr.WorkingArea.Top;
                        WindowState = WindowState.Maximized;
                        break;
                    }
                }
            };
        }
    }

讓窗體在分屏顯示的代碼

public class SecondaryScreen
    {
        public static void Display()
        {
            var screens = Screen.AllScreens;
            if (Screen.AllScreens.Count()>=2)
            {
                Dispatcher.CurrentDispatcher.Invoke(()=> 
                {
                    try
                    {
                        FrmSubScreen subScreen = new FrmSubScreen();

                        subScreen.Show();
                    }
                    catch (Exception e)
                    {
                        Logger.Default.Error(e.Message,e.StackTrace);
                    }
                });
            }           
        }
    }

實現(xiàn)原理

假設(shè)屏幕分辨率是1920*1080,有兩屏幕,多屏的情況下主屏的左上角的坐標(biāo)為(0,0),第二個屏幕左上角坐標(biāo)是(1920,0)。雙屏顯示就是讓窗體自動偏移到指定的屏幕中。

例如:

Left = scr.WorkingArea.Left;
Top = scr.WorkingArea.Top;

注意事項

需要特別注意:Window.WindowState屬性的設(shè)置,如果在Xaml代碼中直接設(shè)置最大化,那么無論后續(xù)如何設(shè)置分屏窗口都會直接顯示在主屏幕中。

解決方案:

在Loaded時設(shè)置WindowState = WindowState.Maximized

登峰造極的成就源于自律

總結(jié)

以上是生活随笔為你收集整理的WPF多屏显示的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。