Comment utiliser L'Accent acrylique dans Windows 10 Mise à jour des créateurs?

Je ne trouve aucun document détaillé pour utiliser L'Accent acrylique ( CreateBackdropBrush ). J'ai trouvé un post dans StackOverflow qui est quelque peu utile, mais il n'aide pas à commencer. Alors s'il vous plaît créer une réponse détaillée à ce post afin que tout le monde peut apprendre.

mise à jour:

Microsoft a publié un document officiel acrylique

Note:

si quelqu'un ne connaît pas L'Accent acrylique. Acrylique Accent est la nouvelle fonctionnalité de Windows 10 Creators Update qui permet à l'arrière-plan de l'application D'être floue et transparente. enter image description here enter image description here

24
demandé sur Community 2017-04-29 21:41:23

3 réponses

CREATOR UPDATE

XAML

vous devez utiliser un composant que vous mettez sur le fond de votre application, disons un RelativePanel

<RelativePanel Grid.Column="0" Grid.ColumnSpan="2" MinWidth="40" x:Name="MainGrid" SizeChanged="Page_SizeChanged"/>
<RelativePanel Grid.Column="0" Width="{Binding ElementName=MainGrid,Path=Width}" Background="#28000000"/>
<Grid>
    <!--Having content here, for example textblock and so on-->
</Grid>

le second RelativePanel est utilisé pour définir la couleur de l'ombre au-dessus du flou.

.CS

et ensuite vous pouvez utiliser le code suivant:

private void applyAcrylicAccent(Panel panel)
{
    _compositor = ElementCompositionPreview.GetElementVisual(this).Compositor;
    _hostSprite = _compositor.CreateSpriteVisual();
    _hostSprite.Size = new Vector2((float) panel.ActualWidth, (float) panel.ActualHeight);

    ElementCompositionPreview.SetElementChildVisual(panel, _hostSprite);
    _hostSprite.Brush = _compositor.CreateHostBackdropBrush();
}
Compositor _compositor;
SpriteVisual _hostSprite;

et l'appelant avec applyAcrylicAccent(MainGrid); Vous aussi aura besoin de gérer l'événement SizeChanged:

private void Page_SizeChanged(object sender, SizeChangedEventArgs e)
{
    if (_hostSprite != null)
        _hostSprite.Size = e.NewSize.ToVector2();
}

bien sûr, vous aurez besoin d'être sur la mise à jour du Créateur pour exécuter ceci, le CreateHostBackdropBrush() ne fonctionnera pas sur un appareil mobile, ou en mode tablette.

en outre, considérer que le panneau ou la grille que vous mettez avec une couleur acrylique ne sera pas en mesure d'afficher tout contrôle (jusqu'à ce que j'ai testé encore). Vous devez donc utiliser votre panneau relatif sans aucun contrôle.

Barre de titre transparente

la transparence de la barre de titre peut être réglée en utilisant le code suivant

ApplicationViewTitleBar formattableTitleBar = ApplicationView.GetForCurrentView().TitleBar;
formattableTitleBar.ButtonBackgroundColor = Colors.Transparent;
CoreApplicationViewTitleBar coreTitleBar = CoreApplication.GetCurrentView().TitleBar;
coreTitleBar.ExtendViewIntoTitleBar = true;

voici un exemple de ce que le code ci-dessus génère (avec d'autres choses ajoutées aussi.) Example

mise à jour D'Automne 10.0.16190 et plus

comme Justin XL le mentionne dans une réponse ci-dessous, à partir de la construction 16190 et au-dessus, les développeurs ont accès aux différentes brosses acryliques situées à Windows.UI.Xaml.Media ( acrylic API ) et aux lignes directrices de Microsoft: Acrylic material guidelines

24
répondu Sven Borden 2017-06-09 18:26:24

Note

cela ne fonctionnera que Windows 10 avant-première (v10.0.16190.0 et plus). Si vous voulez L'utiliser dans la mise à jour des créateurs puis cochez la réponse par Sven Borden.

vous pouvez rejoindre Windows 10 Insider Preview program ici

vous pouvez rejoindre Télécharger Windows 10 SDK Preview Build 16190 ici

Acrylique thème des ressources

ressources nommées acrylique\WindowBrush * représentent l'acrylique de fond, tandis que Acrylique\ElementBrush* fait référence à l'acrylique in-app

Ressources clés -> Teinte opacité -> de Secours de la couleur

SystemControlAcrylicWindowBrush - > 80% - > ChromeMedium

SystemControlAcrylicElementBrush - > 80% - > ChromeMedium

SystemControlAcrylicMediumHighWindowbrush - > 70% - > ChromeMedium

SystemControlAcrylicMediumHighElementbrush - > 70% - > ChromeMedium

SystemControlAcrylicMediumWindowbrush - > 60% - > ChromeMediumLow

SystemControlAcrylicMediumElementbrush - > 60% - > ChromeMediumLow

SystemControlAcrylicAccentMediumhighwindowbrush - > 70% - > SystemAccentColor

SystemControlAcrylicAccentMediumhighelementbrush - > 70% - > SystemAccentColor

SystemControlAcrylicAccentDark1Windowbrush - > 80% - > SystemAccentColorDark1

SystemControlAcrylicAccentDark1Elementbrush - > 80% - > SystemAccentColorDark1

SystemControlAcrylicAccentDark2Mediumhighwindowbrush - > 70% - > SystemAccentColorDark2

SystemControlAcrylicAccentDark2Mediumhighelementbrush - > 70% - >SystemAccentColorDark2

pour peindre une surface spécifique, appliquez une des ressources thématiques ci-dessus aux fonds d'éléments comme vous appliqueriez n'importe quelle autre ressource de pinceau

<Grid Background="{ThemeResource SystemControlAcrylicElementBrush}">

Personnalisé acrylique brosse

  • TintColor: la couche de superposition couleur/teinte. Envisagez de spécifier à la fois la valeur de couleur RVB et l'opacité du canal alpha.

  • TintOpacity: l'opacité de la teinte de la couche. Nous recommandons 80% d'opacité comme point de départ, bien que différentes couleurs peuvent sembler plus convaincant à d'autres transparences.

  • BackgroundSource: le drapeau pour préciser si vous voulez de l'acrylique d'arrière-plan ou In-app.

  • FallbackColor: la couleur solide qui remplace acrylique en mode batterie faible. Pour l'acrylique de fond, la couleur de repli remplace également l'acrylique lorsque votre application n'est pas dans la fenêtre active du bureau ou lorsque l'application est en cours d'exécution sur le téléphone et la Xbox.

    <ResourceDictionary.ThemeDictionaries>
    <ResourceDictionary x:Key="Default">
        <AcrylicBrush x:Key="MyAcrylicBrush"
            BackgroundSource="HostBackdrop"
            TintColor="#FFFF0000"
            TintOpacity="0.8"
            FallbackColor="#FF7F0000"/>
    </ResourceDictionary>
    
    <ResourceDictionary x:Key="HighContrast">
        <SolidColorBrush x:Key="MyAcrylicBrush"
            Color="{ThemeResource SystemColorWindowColor}"/>
    </ResourceDictionary>
    
    <ResourceDictionary x:Key="Light">
        <AcrylicBrush x:Key="MyAcrylicBrush"
            BackgroundSource="HostBackdrop"
            TintColor="#FFFF0000"
            TintOpacity="0.8"
            FallbackColor="#FFFF7F7F"/>
    </ResourceDictionary>
    </ResourceDictionary.ThemeDictionaries>
    

l'échantillon suivant montre comment déclarer la brosse acrylique en code. Si votre application prend en charge plusieurs cibles OS, assurez-vous de vérifier que cette API est disponible sur la machine de l'utilisateur.

if (Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.UI.Xaml.Media.XamlCompositionBrushBase"))
{
    Windows.UI.Xaml.Media.AcrylicBrush myBrush = new Windows.UI.Xaml.Media.AcrylicBrush();
    myBrush.BackgroundSource = Windows.UI.Xaml.Media.AcrylicBackgroundSource.HostBackdrop;
    myBrush.TintColor = Color.FromArgb(255, 202, 24, 37);
    myBrush.FallbackColor = Color.FromArgb(255, 202, 24, 37);
    myBrush.TintOpacity = 0.6;

    grid.Fill = myBrush;
}
else
{
    SolidColorBrush myBrush = new SolidColorBrush(Color.FromArgb(255, 202, 24, 37));
    grid.Fill = myBrush;
}

extension de l'acrylique dans votre titre bar

CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar = true;
ApplicationViewTitleBar titleBar = ApplicationView.GetForCurrentView().TitleBar;
titleBar.ButtonBackgroundColor = Colors.Transparent;
titleBar.ButtonInactiveBackgroundColor = Colors.Transparent;

Source: acrylique

8
répondu Vijay Nirmal 2017-07-17 16:54:20