アクリルアクセントを使用するための詳細なドキュメントが見つかりません( CreateBackdropBrush )。 StackOverflowで post を見つけましたが、これは多少便利ですが、使い始めるのに役立ちません。だから、誰もが学ぶことができるように、この投稿への詳細な回答を作成してください。
更新:
Microsoftは公式の アクリル素材 ドキュメントをリリースしました
注:
誰かがアクリルアクセントについて知らないなら。アクリルアクセントは、Windows 10 Creators Updateの新機能であり、アプリの背景をぼやけて透明にすることができます。 (
アプリの背景に配置するコンポーネントを使用する必要があります。たとえば、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>
_
2番目のRelativePanel
は、ぼかしの上に影の色を設定するために使用されます。
そして、次のコードを使用できます:
_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;
_
applyAcrylicAccent(MainGrid);
で呼び出します。SizeChangedイベントも処理する必要があります。
_private void Page_SizeChanged(object sender, SizeChangedEventArgs e)
{
if (_hostSprite != null)
_hostSprite.Size = e.NewSize.ToVector2();
}
_
もちろん、これを実行するにはCreator Updateが必要です。CreateHostBackdropBrush()は、モバイルデバイスまたはタブレットモードでは機能しません。
また、アクリル色で設定したパネルまたはグリッドは、コントロールを表示できないことを考慮してください(私がまだテストしている限り)。そのため、コントロールなしで相対パネルを使用する必要があります。
次のコードを使用して、タイトルバーの透明度を設定できます。
_ApplicationViewTitleBar formattableTitleBar = ApplicationView.GetForCurrentView().TitleBar;
formattableTitleBar.ButtonBackgroundColor = Colors.Transparent;
CoreApplicationViewTitleBar coreTitleBar = CoreApplication.GetCurrentView().TitleBar;
coreTitleBar.ExtendViewIntoTitleBar = true;
_
ここで、上記のコードが生成するものの例(他にもいくつか追加されています。)
ビルド16190以降から始まる以下の回答でJustin XLが言及しているように、開発者は_Windows.UI.Xaml.Media
_( Acrylic API )とMicrosoftのガイドラインにあるさまざまなアクリルブラシにアクセスできます:- アクリル材料ガイドライン
の中に クリエイターズアップデート Insider Preview16193(Windows 10 SDK16190と一緒に)、 new AcrylicBrush
通常のSolidColorBrush
と同様に要素に直接適用できます。
<Page xmlns:media="using:Windows.UI.Xaml.Media" ...>
<Page.Resources>
<media:AcrylicBrush x:Key="HostBackdropBrush"
BackgroundSource="HostBackdrop"
TintColor="LightBlue"
TintOpacity="0.6"
FallbackColor="LightSkyBlue"
FallbackForced="False" />
</Page.Resources>
<Grid Background="{StaticResource HostBackdropBrush}" />
</Page>
BackgroundSource
をBackdrop
に変更して、アプリウィンドウの背後のコンテンツではなくアプリのコンテンツからサンプリングできることに注意してください。また、アプリウィンドウのフォーカスが失われたり、デバイスがバッテリーセーバーモードになっている場合は、アクリル効果が失われるため、適切なFallbackColor
を定義してください。
注
これは、Windows 10 Insider Preview(v10.0.16190.0以降)でのみ機能します。 Creators Updateで使用する場合は、Sven Bordenによる answer を確認してください。
Windows 10 Insider Previewプログラムに参加できます こちら
Windows 10 SDK Preview Build 16190のダウンロードに参加できます こちら
Acrylic\WindowBrush *という名前のリソースは背景アクリルを表し、Acrylic\ElementBrush *はアプリ内アクリルを表します
リソースキー->色合いの不透明度->フォールバックカラー
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
特定のサーフェスをペイントするには、他のブラシリソースを適用するのと同じように、要素の背景に上記のテーマリソースのいずれかを適用します
<Grid Background="{ThemeResource SystemControlAcrylicElementBrush}">
TintColor:カラー/ティントオーバーレイレイヤー。 RGBカラー値とアルファチャネルの不透明度の両方を指定することを検討してください。
TintOpacity:ティントレイヤーの不透明度。開始点として80%の不透明度をお勧めしますが、他の透明度では異なる色がより魅力的に見える場合があります。
BackgroundSource:背景またはアプリ内アクリルのどちらを使用するかを指定するフラグ。
FallbackColor:低バッテリモードでアクリルを置き換える無地の色。背景アクリルの場合、アプリがアクティブなデスクトップウィンドウにない場合、またはアプリが電話と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>
次のサンプルは、AcrylicBrushをコードで宣言する方法を示しています。アプリが複数のOSターゲットをサポートしている場合、このAPIがユーザーのマシンで利用可能であることを確認してください。
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;
}
CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar = true;
ApplicationViewTitleBar titleBar = ApplicationView.GetForCurrentView().TitleBar;
titleBar.ButtonBackgroundColor = Colors.Transparent;
titleBar.ButtonInactiveBackgroundColor = Colors.Transparent;
出典: アクリル素材