WinUI 3 全屏转最大化窗口抖动问题及修复咨询
WinUI3 消除全屏切换至最大化时的窗口闪烁问题
问题原因
从全屏模式切换回重叠式窗口时,默认会先进入还原状态,再手动切换最大化会导致视觉抖动。核心解决思路是跳过中间的还原状态,直接从全屏过渡到最大化。
修改后的代码实现
替换原FullScreenButton_Click方法为以下代码:
private void FullScreenButton_Click(object sender, RoutedEventArgs e) { if (AppWindow.Presenter is OverlappedPresenter overlappedPresenter) { if (overlappedPresenter.State == OverlappedPresenterState.Maximized) { AppWindow.SetPresenter(AppWindowPresenterKind.FullScreen); } } else if (AppWindow.Presenter is FullScreenPresenter) { // 切换到重叠式窗口 presenter var overlappedPresenter = AppWindow.SetPresenter(AppWindowPresenterKind.Overlapped) as OverlappedPresenter; // 立即触发最大化,跳过还原状态 overlappedPresenter?.Maximize(); } }
原理说明
切换到OverlappedPresenter后立刻调用Maximize(),系统会合并这两个窗口状态变更操作,不会渲染中间的还原状态,从而避免视觉闪烁。此操作的连贯性确保窗口直接从全屏模式过渡到最大化模式。
内容的提问来源于stack exchange,提问作者Socrates
相关产品推荐
相关产品推荐

