前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >win10 UWP 全屏

win10 UWP 全屏

作者头像
林德熙
发布2022-08-09 16:37:21
4260
发布2022-08-09 16:37:21
举报
文章被收录于专栏:林德熙的博客林德熙的博客

win10 可以全屏软件或窗口,窗口有一般、最小化、最大化。我们有新的API设置我们软件是全屏,是窗口。我们可以使用ApplicationView让我们软件全屏或取消。

下面是一个简单的例子,判断我们软件是不是全屏,如果是,就不全屏,代码在一个 ToggleButton 的点击

代码语言:javascript
复制
ApplicationView view = ApplicationView.GetForCurrentView();

bool isInFullScreenMode = view.IsFullScreenMode;

if (isInFullScreenMode)  
{
    view.ExitFullScreenMode();
}
else  
{
    view.TryEnterFullScreenMode();
}

IsFullScreenMode为true,现在应用全屏

ExitFullScreenMode退出全屏

TryEnterFullScreenMode进入全屏,进入全屏成功true

如果窗口改变需要知道,可以注册Window.Current.SizeChanged

代码语言:javascript
复制
public class IsFullScreenModeTrigger : StateTriggerBase  
{
    public IsFullScreenModeTrigger()
    {
        ApplicationView view = ApplicationView.GetForCurrentView();

        SetActive(view.IsFullScreenMode);

        Window.Current.SizeChanged += CurrentWindow_SizeChanged;
    }

    private void CurrentWindow_SizeChanged(object sender, Windows.UI.Core.WindowSizeChangedEventArgs e)
    {
        ApplicationView view = ApplicationView.GetForCurrentView();

        SetActive(view.IsFullScreenMode);
    }
}
代码语言:javascript
复制
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">  
    <VisualStateManager.VisualStateGroups>
        <VisualStateGroup>
            <VisualState x:Name="InFullScreen">
                <VisualState.StateTriggers>
                    <local:IsFullScreenModeTrigger />
                </VisualState.StateTriggers>
                <VisualState.Setters>
                    <Setter Target="IsFullScreenText.Text" Value="In full screen mode" />
                </VisualState.Setters>
            </VisualState>
        </VisualStateGroup>
    </VisualStateManager.VisualStateGroups>
    <StackPanel HorizontalAlignment="Center">
        <Button Click="Button_Click" 
                Content="Toggle full screen"></Button>
        <TextBlock x:Name="IsFullScreenText" 
                    FontSize="72" 
                    TextWrapping="Wrap" 
                    Text="Not in full screen mode"/>
    </StackPanel>
</Grid>  

在我们应用变为全屏,textblock就会显示 In full screen mode

我们可以设置PreferredLaunchWindowingMode,在我们应用打开设置窗口大小

代码语言:javascript
复制
ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.FullScreen;

ApplicationViewWindowingMode可以Auto ,PreferredLaunchViewSize设置窗口和ApplicationView.PreferredLaunchViewSize,如果没有设置ApplicationView.PreferredLaunchViewSize会使用上次关闭窗口, 如FullScreen

win10有很简单的API可以应用全屏,在电脑,我们经常用窗口,手机经常使用全屏。

参见:http://igrali.com/2015/06/21/full-screen-mode-in-windows-10-universal-apps/

VB 全屏

在点击按钮的时候设置 UWP 窗口在原来全屏的时候变为窗口显示,在窗口显示变为全屏

代码语言:javascript
复制
    Sub FullScreenButton() Handles Button.Click
        Dim isFullScreen = ApplicationView.GetForCurrentView.IsFullScreenMode

        If isFullScreen Then
            ApplicationView.GetForCurrentView.ExitFullScreenMode()
        Else
            ApplicationView.GetForCurrentView.TryEnterFullScreenMode()
        End If
    End Sub

C++ 全屏

代码语言:javascript
复制
// Made this code to change to fullscreen, useful if you're creating a DX application in vs2015/c++/uwp
// Also look at this sample: https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/FullScreenMode/cpp
// And this MSDN page: https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.viewmanagement.applicationview.preferredlaunchwindowingmode?cs-save-lang=1&cs-lang=cpp#code-snippet-1
// preferred mode in constructor
App::App() 
{
    // starts with this window size
    Windows::UI::ViewManagement::ApplicationView::PreferredLaunchViewSize= Windows::Foundation::Size(800,600);
    Windows::UI::ViewManagement::ApplicationView::PreferredLaunchWindowingMode = Windows::UI::ViewManagement::ApplicationViewWindowingMode::PreferredLaunchViewSize;
}

// call to this to set to FS
void App::ToggleToFullscreen()
{
    auto av = Windows::UI::ViewManagement::ApplicationView::GetForCurrentView();
    if (!av->IsFullScreenMode)
    {
        if (av->TryEnterFullScreenMode())
        {
            av->FullScreenSystemOverlayMode = Windows::UI::ViewManagement::FullScreenSystemOverlayMode::Minimal;
        }
    }
    else
    {
        av->ExitFullScreenMode();
        av->FullScreenSystemOverlayMode = Windows::UI::ViewManagement::FullScreenSystemOverlayMode::Standard;
    }
}

参见:https://gist.github.com/gyakoo/cfef3ca0403d26a082afc8c055240082

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • VB 全屏
  • C++ 全屏
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档