UI: 窗口全屏, 窗口尺寸

窗口全屏

  • 窗口尺寸

示例
1、窗口全屏
UI/FullScreen.xaml

<Page
    x:Class="Windows10.UI.FullScreen"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:Windows10.UI"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Grid Background="Transparent">
        <StackPanel Margin="10 0 10 10">

            <TextBlock Name="lblMsg" Margin="0 10 0 0" />

            <Button Name="btnFullScreen" Content="全屏/取消全屏" Click="btnFullScreen_Click" Margin="0 10 0 0" />

            <Button Name="btnShowStandardSystemOverlays" Content="在全屏状态下,显示系统 UI,比如标题栏和任务栏" Click="btnShowStandardSystemOverlays_Click" Margin="0 10 0 0" />

            <CheckBox Name="chkFullScreenSystemOverlayMode" Content="全屏状态下的,系统边缘手势的响应模式 unchecked:FullScreenSystemOverlayMode.Standard, checked:FullScreenSystemOverlayMode.Minimal" Click="chkFullScreenSystemOverlayMode_Click" Margin="0,10,0,0" />

            <CheckBox Name="chkPreferredLaunchWindowingMode" Content="窗口的启动模式 unchecked:ApplicationViewWindowingMode.Auto, unchecked:ApplicationViewWindowingMode.FullScreen" Click="chkPreferredLaunchWindowingMode_Click" Margin="0,10,0,0" />

        </StackPanel>
    </Grid>
</Page>

UI/FullScreen.xaml.cs

/*
 * 演示“窗口全屏”相关知识点
 *
 * ApplicationView - 用于操作窗口以及获取窗口信息
 *     GetForCurrentView() - 返回 ApplicationView 实例
 */

using Windows.System;
using Windows.UI.ViewManagement;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Navigation;

namespace Windows10.UI
{
    public sealed partial class FullScreen : Page
    {
        private MainPage _rootPage;

        public FullScreen()
        {
            this.InitializeComponent();

            this.Loaded += FullScreen_Loaded;
        }

        private void FullScreen_Loaded(object sender, RoutedEventArgs e)
        {
            /*
             * ApplicationView.PreferredLaunchWindowingMode - 窗口的启动模式
             *     Auto - 系统自动决定
             *     PreferredLaunchViewSize - 由 ApplicationView.PreferredLaunchViewSize 决定(参见:UI/ScreenSize.xaml)
             *     FullScreen - 全屏启动
             *
             * ApplicationView.GetForCurrentView().FullScreenSystemOverlayMode - 全屏状态下的,系统边缘手势的响应模式
             *     Standard - 标准方式。比如鼠标移动到顶端显示标题栏,移动到底端显示任务栏
             *     Minimal - 最小方式。比如鼠标移动到顶端显示一个小的临时 UI,移动到底端显示一个小的临时 UI,点击这个临时 UI 时再显示标题栏或任务栏
             */

            // unchecked:FullScreenSystemOverlayMode.Standard, checked:FullScreenSystemOverlayMode.Minimal
            chkFullScreenSystemOverlayMode.IsChecked = ApplicationView.GetForCurrentView().FullScreenSystemOverlayMode == FullScreenSystemOverlayMode.Minimal;

            // unchecked:ApplicationViewWindowingMode.Auto, unchecked:ApplicationViewWindowingMode.FullScreen
            chkPreferredLaunchWindowingMode.IsChecked = ApplicationView.PreferredLaunchWindowingMode == ApplicationViewWindowingMode.FullScreen;
        }

        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            _rootPage = MainPage.Current;
            _rootPage.KeyDown += _rootPage_KeyDown;
        }

        protected override void OnNavigatedFrom(NavigationEventArgs e)
        {
            _rootPage.KeyDown -= _rootPage_KeyDown;
        }

        private void _rootPage_KeyDown(object sender, KeyRoutedEventArgs e)
        {
            // 判断是否按下了 escape 键
            if (e.Key == VirtualKey.Escape)
            {
                var view = ApplicationView.GetForCurrentView();
                if (view.IsFullScreenMode)
                {
                    // 退出全屏状态
                    view.ExitFullScreenMode();
                }
            }
        }

        private void btnFullScreen_Click(object sender, RoutedEventArgs e)
        {
            ApplicationView view = ApplicationView.GetForCurrentView();
            // 判断当前是否是全屏模式
            if (view.IsFullScreenMode)
            {
                // 退出全屏模式
                view.ExitFullScreenMode();
                lblMsg.Text = "退出全屏模式";
            }
            else
            {
                // 尝试进入全屏模式
                bool isSuccess = view.TryEnterFullScreenMode();
                if (isSuccess)
                {
                    lblMsg.Text = "进入全屏模式";
                }
                else
                {
                    lblMsg.Text = "尝试进入全屏模式失败";
                }
            }
        }

        private void btnShowStandardSystemOverlays_Click(object sender, RoutedEventArgs e)
        {
            ApplicationView view = ApplicationView.GetForCurrentView();
            // 在全屏状态下,是否显示系统 UI,比如标题栏和任务栏
            view.ShowStandardSystemOverlays();
        }

        private void chkFullScreenSystemOverlayMode_Click(object sender, RoutedEventArgs e)
        {
            ApplicationView view = ApplicationView.GetForCurrentView();
            view.FullScreenSystemOverlayMode = chkFullScreenSystemOverlayMode.IsChecked.Value ? FullScreenSystemOverlayMode.Minimal : FullScreenSystemOverlayMode.Standard;
        }

        private void chkPreferredLaunchWindowingMode_Click(object sender, RoutedEventArgs e)
        {
            ApplicationView.PreferredLaunchWindowingMode = chkPreferredLaunchWindowingMode.IsChecked.Value ? ApplicationViewWindowingMode.FullScreen : ApplicationViewWindowingMode.Auto;
        }
    }
}

2、窗口尺寸
UI/ScreenSize.xaml

<Page
    x:Class="Windows10.UI.ScreenSize"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:Windows10.UI"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Grid Background="Transparent">
        <StackPanel Margin="10 0 10 10">

            <TextBlock Name="lblMsg" Margin="0 10 0 0" />

            <Button Name="btnChangeSize" Content="尝试改变窗口大小" Click="btnChangeSize_Click" Margin="0 10 0 0" />

        </StackPanel>
    </Grid>
</Page>

UI/ScreenSize.xaml.cs

/*
 * 演示“窗口尺寸”相关知识点
 *
 * ApplicationView - 用于操作窗口以及获取窗口信息
 *     GetForCurrentView() - 返回 ApplicationView 实例
 */

using Windows.Foundation;
using Windows.UI.ViewManagement;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;

namespace Windows10.UI
{
    public sealed partial class ScreenSize : Page
    {
        public ScreenSize()
        {
            this.InitializeComponent();

            this.Loaded += ScreenSize_Loaded;
        }

        private void ScreenSize_Loaded(object sender, RoutedEventArgs e)
        {
            // Window.Current.Bounds - 当前窗口的大小(单位是有效像素,没有特别说明就都是有效像素)
            //     注:窗口大小不包括标题栏,标题栏属于系统级 UI
            lblMsg.Text = string.Format("window size: {0} * {1}", Window.Current.Bounds.Width, Window.Current.Bounds.Height);

            ApplicationView applicationView = ApplicationView.GetForCurrentView();

            // SetPreferredMinSize(Size minSize) - 指定窗口允许的最小尺寸
            //     最小 width 和最小 height 都不能为零,我这里测试的是最小 width 为 192,最小 height 为 48
            applicationView.SetPreferredMinSize(new Size(200, 200));

            // PreferredLaunchViewSize - 窗口启动时的初始尺寸
            // 若要使 PreferredLaunchViewSize 设置有效,需要将 ApplicationView.PreferredLaunchWindowingMode 设置为 ApplicationViewWindowingMode.PreferredLaunchViewSize
            ApplicationView.PreferredLaunchViewSize = new Size(800, 480);
            ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.PreferredLaunchViewSize;

            /*
             * ApplicationView.PreferredLaunchWindowingMode - 窗口的启动模式
             *     Auto - 系统自动调整
             *     PreferredLaunchViewSize - 由 ApplicationView.PreferredLaunchViewSize 决定
             *     FullScreen - 全屏启动
             */
        }

        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            // 窗口尺寸发生变化时触发的事件
            Window.Current.SizeChanged += Current_SizeChanged;
        }

        protected override void OnNavigatedFrom(NavigationEventArgs e)
        {
            Window.Current.SizeChanged -= Current_SizeChanged;
        }

        private void Current_SizeChanged(object sender, Windows.UI.Core.WindowSizeChangedEventArgs e)
        {
            lblMsg.Text = string.Format("window size: {0} * {1}", e.Size.Width, e.Size.Height);
        }

        private void btnChangeSize_Click(object sender, RoutedEventArgs e)
        {
            ApplicationView applicationView = ApplicationView.GetForCurrentView();

            Size size = new Size(600, 600);

            // TryResizeView(Size value) - 尝试将窗口尺寸设置为指定的大小
            bool success = applicationView.TryResizeView(size);
            if (success)
            {
                lblMsg.Text = "尝试修改窗口尺寸成功";
            }
            else
            {
                lblMsg.Text = "尝试修改窗口尺寸失败";
            }

            // 注:怎么修改窗口的显示位置呢?暂时不知道
        }
    }
}

时间: 2024-10-11 17:32:51

UI: 窗口全屏, 窗口尺寸的相关文章

QT中关于窗口全屏显示与退出全屏的实现

近期在学习QT时遇到了很多问题这也是其中一个,个人通过在各种书籍和网络上的查阅找到了一些关于这方面的答案,希望能给大家一些帮助. 首先,在QT中对于窗口显示常用的有这么几个方法可以调用: Qt全屏显示函数            showFullScreen() Qt最大化显示函数         showMaximized()Qt最小化显示函数         showMinimized()Qt固定尺寸显示函数      resize(x,y)Qt设置最大尺寸函数      setMaximum

js控制全屏窗口

<script src="__PUBLIC__/Js/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ findDimensions(); }); function findDimensions(){ var h = document.documentElement.clientHeight-100; $(&

WPF 窗口全屏

this.WindowState = System.Windows.WindowState.Normal; this.WindowStyle = System.Windows.WindowStyle.None; this.ResizeMode = System.Windows.ResizeMode.NoResize; this.Topmost = true; this.Left = 0.0; this.Top = 0.0; this.Width = System.Windows.SystemPa

[安卓]Android 设置窗口全屏

转自:http://blog.sina.com.cn/s/blog_4c451e0e010133ab.html 设置全屏包括两个部分: 窗口全屏和Activity全屏.窗口全屏是指隐藏系统顶部用来显示时间.电量.信号等信息的标题栏:Activity全屏是指隐藏程序的标题栏.我们可以通过修改AndroidManifest.xml文件来实现. 1.窗口全屏fullscreen.java代码如下: package wzhnsc.test.style; import android.app.Activi

Windows中检测当前是否有窗口全屏

不时看到有人问起如何判断当前是否有窗口正处于全屏状态? 不过, 在解决这个问题之前先来解决一个简单的问题?         什么是全屏?     相当一部分人认为: 窗口如果是最大化的, 那么它就是最大化的? 真是这样吗? 简直BS!. 全屏是指窗口整体大小至少占据了整个屏幕, 而不是除任务栏以外的那一部分空间! 而最大化是指窗口整体大小占据了桌面的工作区(Workarea)! 所以, 不要只是简单地调用IsZoomed()就决定窗口当前是否全屏, 那是判断是否最大化的作为; 也不要只是把窗口的

win32之全屏窗口

游戏开发中经常使用会让游戏以全屏窗口的状态运行,下面一个例子就是来实现这个效果的. #include <windows.h> void RegisterMyClass(); LRESULT CALLBACK MainWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine

Qt中子窗口全屏显示与退出全屏

在Qt开发中偶尔遇到子窗口全屏显示和退出全屏的功能需求,是一种比较正常的情况,首先,我们需要知道子窗口全屏显示与退出全屏主要会调用的方法有哪些,下面将列举此过程主要调用的方法: isFullScreen():判断窗口当前是处于全屏状态还是非全屏状态 setWindowFlags(Qt::WindowFlags type):设置窗口属性 showFullScreen():设置窗口全屏显示 showNormal():设置窗口恢复原来显示(Restores the widget after it ha

Win7下连远程桌面 窗口 全屏 切换

今天在win7下用远程桌面,不小心把桌面上面的还原按钮给点到了, 于是整个远程桌面就变成了本地机的一个窗口了,可以看见任务栏的那种 有些人觉得这样方便,可以看见qq消息等,但我想切回全屏时一时找不到按钮,囧 百度了下,有快捷键ctrl+alt+break 貌似在XP下连远程桌面时,只能全屏 其它快捷键也贴出来,不过貌似都用不着 链接:http://wenwen.soso.com/z/q210960589.htm?sp=1176 快捷键 描述 Alt+Page Up 从左向右在程序之间切换. Al

Mac的Parallels在启动Win的时候让它独立全屏窗口

这里备忘一下,由于经常需要科学上网,Win方法比较多少,所以使用Parallels在Win下科学上网还是很有必要的,为了使用使用方便,一般让Parallels启动系统之后自动生成一个独立的全窗口,方便来回在Win和Osx之间切换,这样如同使用不同桌面一样切换系统.这里需要设置Parallels的一个属性才能达到如此之方便,在Parallels设置里的全屏选项里面设置好使用OSX全屏,这样当你启动Win的时候你四个手指可以轻易的切换系统...