Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Materiais no Windows 11 são efeitos visuais aplicados a superfícies de UX que se assemelham a artefatos da vida real. Os materiais occluding são usados como camadas base embaixo de controles interativos de interface do usuário.
Mica é um material opaco que incorpora o tema do usuário e o papel de parede do desktop para criar uma aparência altamente personalizada. O Mica foi projetado levando o desempenho em consideração, pois captura apenas o papel de parede de fundo uma vez para criar a visualização dele. Portanto, nós o recomendamos para a camada de base do seu aplicativo, especialmente na área da barra de título.
Acrílico é um material semitransparente que replica o efeito do vidro gelado. É usado apenas para superfícies transitórias e de light-dismiss, como submenus e menus de contexto.
Este artigo descreve como aplicar Mica ou Acrílico como a camada base do aplicativo XAML Windows App SDK/WinUI 3.
Observação
- Para usar materiais de fundo em um aplicativo Win32, consulte Apply Mica em aplicativos da área de trabalho Win32 para Windows 11.
- Para o acrílico no aplicativo aplicado a elementos da interface do usuário (não a tela de fundo da janela), consulte acrílico no aplicativo.
Como usar um material de pano de fundo
![]()
O aplicativo Da Galeria do WinUI 3 inclui exemplos interativos de controles e recursos do WinUI. Obtenha o aplicativo na Microsoft Store ou navegue pelo código-fonte em GitHub.
Para aplicar material Mica ou Acrílico ao seu aplicativo, defina a SystemBackdrop propriedade para um XAML SystemBackdrop (normalmente, um dos planos de fundo integrados, MicaBackdrop ou DesktopAcrylicBackdrop).
Esses elementos têm uma SystemBackdrop propriedade:
- CommandBarFlyoutCommandBar.SystemBackdrop
- ContentIsland.SystemBackdrop
- DesktopWindowXamlSource.SystemBackdrop
- FlyoutBase.SystemBackdrop
- MenuFlyoutPresenter.SystemBackdrop
- Popup.SystemBackdrop
- Window.SystemBackdrop
Estes exemplos mostram como definir o cenário do sistema em XAML.
Mica
Mica é normalmente usado como pano de fundo para uma janela de aplicativo.
<Window
... >
<Window.SystemBackdrop>
<MicaBackdrop/>
</Window.SystemBackdrop>
</Window>
Mica Alt
Para usar a variante Mica Alt, defina a Kind propriedade como BaseAlt.
<Window
... >
<Window.SystemBackdrop>
<MicaBackdrop Kind="BaseAlt"/>
</Window.SystemBackdrop>
</Window>
Acrylic
O Desktop Acrylic pode ser usado como pano de fundo para uma janela.
<Window
... >
<Window.SystemBackdrop>
<DesktopAcrylicBackdrop/>
</Window.SystemBackdrop>
</Window>
Acrílico na interface do usuário transitória
O acrílico também é comumente usado como pano de fundo para UI transitória, como uma janela flutuante. Você pode definir isso em XAML ou em código, já que os flyouts geralmente são criados dinamicamente.
<Flyout
... >
<Flyout.SystemBackdrop>
<DesktopAcrylicBackdrop/>
</Flyout.SystemBackdrop>
</Flyout>
Flyout flyout = new Flyout()
{
SystemBackdrop = new DesktopAcrylicBackdrop()
};
Avançado: como usar um controlador de cenário do sistema
Observação
A partir do Windows App SDK 1.3, você pode aplicar material definindo a propriedade Window.SystemBackdrop a um SystemBackdrop XAML, conforme descrito na seção anterior. Essa é a maneira recomendada de aplicar um material para a maioria dos aplicativos.
O restante deste artigo mostra como usar as APIs MicaController e DesktopAcrylicController, que oferecem mais controle sobre o comportamento do fundo.
Para usar um material de pano de fundo em seu aplicativo, você pode usar um dos controladores que implementa a interface ISystemBackdropController (MicaController ou DesktopAcrylicController). Essas classes gerenciam tanto a renderização do material de pano de fundo do sistema quanto a manipulação da política do sistema para o material.
Para usar o Mica como material de pano de fundo, crie um objeto MicaController. Para usar o Acrílico, crie um objeto DesktopAcrylicController. O código de configuração e suporte é o mesmo para cada tipo de material de pano de fundo do sistema.
Criar um MicaController
MicaController micaController;
bool TrySetMicaBackdrop(bool useMicaAlt)
{
if (MicaController.IsSupported())
{
...
micaController = new MicaController();
micaController.Kind = useMicaAlt ? MicaKind.BaseAlt : MicaKind.Base;
...
}
}
Criar um DesktopAcrylicController
DesktopAcrylicController acrylicController;
bool TrySetAcrylicBackdrop(bool useAcrylicThin)
{
if (DesktopAcrylicController.IsSupported())
{
...
acrylicController = new DesktopAcrylicController();
acrylicController.Kind = useAcrylicThin
? DesktopAcrylicKind.Thin : DesktopAcrylicKind.Base;
...
}
}
O controlador reage aos temas Claro e Escuro do sistema por padrão. Para substituir esse comportamento, você pode definir as seguintes propriedades no controlador:
Observação
Depois de personalizar qualquer uma das quatro propriedades do controlador, ele não aplica mais valores padrão Claro ou Escuro quando o SystemBackdropConfiguration.Theme associado é alterado. Você precisa atualizar manualmente essas propriedades para corresponder ao novo tema.
Para usar o material de pano de fundo em seu aplicativo, os seguintes itens são necessários:
Suporte do sistema
O sistema em que o aplicativo é executado deve dar suporte ao material de pano de fundo. Chame o método MicaController.IsSupported ou DesktopAcrylicController.IsSupported para garantir que o material do cenário tenha suporte no runtime.
Um destino válido
Você deve fornecer um destino que implemente a interface ICompositionSupportsSystemBackdrop. Em um aplicativo XAML, a Janela XAML implementa essa interface e é usada como o destino do pano de fundo.
Um objeto SystemBackdropConfiguration
O SystemBackdropConfiguration fornece ao controlador de pano de fundo do sistema informações de política específicas do aplicativo para configurar corretamente o material de pano de fundo do sistema.
Um objeto DispatcherQueue
Você precisa de um Windows.System.DispatcherQueue disponível no thread XAML principal. Chame
DispatcherQueue.EnsureSystemDispatcherQueue()para garantir que exista uma.
Exemplo: usar o Mica com um controlador em um aplicativo WinUI
Este exemplo mostra como configurar o material do cenário Mica usando um controlador em um aplicativo XAML.
Dica
Além disso, consulte estes projetos de exemplo no GitHub:
C#: SampleSystemBackdropsWindow na Galeria WinUI.
C++/WinRT: Exemplo de Mica do Windows App SDK.
using Microsoft.UI.Composition;
using Microsoft.UI.Composition.SystemBackdrops;
using Microsoft.UI.Xaml;
using WinRT; // required to support Window.As<ICompositionSupportsSystemBackdrop>()
public sealed partial class MainWindow : Window
{
MicaController micaController;
SystemBackdropConfiguration configurationSource;
public MainWindow()
{
this.InitializeComponent();
TrySetMicaBackdrop(false);
}
bool TrySetMicaBackdrop(bool useMicaAlt)
{
if (MicaController.IsSupported())
{
DispatcherQueue.EnsureSystemDispatcherQueue();
// Hooking up the policy object.
configurationSource = new SystemBackdropConfiguration();
Activated += Window_Activated;
Closed += Window_Closed;
((FrameworkElement)Content).ActualThemeChanged += Window_ThemeChanged;
// Initial configuration state.
configurationSource.IsInputActive = true;
SetConfigurationSourceTheme();
micaController = new MicaController
{
Kind = useMicaAlt ? MicaKind.BaseAlt : MicaKind.Base
};
// Enable the system backdrop.
// Note: Be sure to have "using WinRT;" to support the Window.As<...>() call.
micaController.AddSystemBackdropTarget(
this.As<ICompositionSupportsSystemBackdrop>());
micaController.SetSystemBackdropConfiguration(configurationSource);
return true; // Succeeded.
}
return false; // Mica is not supported on this system.
}
private void Window_Activated(object sender, WindowActivatedEventArgs args)
{
if (configurationSource != null)
configurationSource.IsInputActive =
args.WindowActivationState != WindowActivationState.Deactivated;
}
private void Window_Closed(object sender, WindowEventArgs args)
{
// Make sure any Mica/Acrylic controller is disposed
// so it doesn't try to use this closed window.
micaController?.Dispose();
micaController = null;
Activated -= Window_Activated;
configurationSource = null;
}
private void Window_ThemeChanged(FrameworkElement sender, object args)
{
if (configurationSource != null)
SetConfigurationSourceTheme();
}
private void SetConfigurationSourceTheme()
{
if (configurationSource != null)
configurationSource.Theme =
(SystemBackdropTheme)((FrameworkElement)Content).ActualTheme;
}
}
Artigos relacionados
Windows developer