【问题标题】:UWP - Acrylic brush always falls back to solid colorUWP - 亚克力笔刷总是回到纯色
【发布时间】:2018-04-03 14:10:57
【问题描述】:

我一直在尝试实现新的亚克力设计语言,但应用的亚克力笔刷总是回退到它的备用颜色。我使用 Fall Creators Update,我的应用程序最小目标也是 Fall Creators Update。例如,当我使用诸如计算器之类的现代应用程序时,亚克力似乎可以工作。 感谢您的任何建议。

例子

<Rectangle  
x:Name="GameTree" 
Grid.Row="1" Grid.Column="5" HorizontalAlignment="Stretch" 
Fill="{ThemeResource MyAcrylicBrush}"/>

画笔定义

<AcrylicBrush x:Key="MyAcrylicBrush"
AlwaysUseFallback="False"
BackgroundSource="HostBackdrop"
TintColor="#FF00ff00"
TintOpacity="0.8"
FallbackColor="#FF000066"
/>

【问题讨论】:

  • 因此,该笔刷有一些警告会鼓励提出几个问题。它是否在装有 win10 Fall Creators 更新的机器上运行?机器是否处于省电模式?是否处于高对比度模式?是否在个性化设置中关闭了透明度?运行它的硬件是低端的吗?这台机器是 xbox、hololens 还是在平板模式下运行?这些考虑中的任何一项都将强制设置回退条件。
  • 嗯,正如我在其他应用程序中所写的,它运行良好。我用秋天c。更新,没有保存模式,没有高合同,打开透明度,硬件相当不错,没有平板模式等。

标签: c# windows xaml uwp


【解决方案1】:

Acrylic 材质提供了更多不同的 Tint opacity 主题供使用。如果你想实现像窗口计算器这样的功能,你可以直接使用SystemControlChromeHighAcrylicWindowMediumBrush ThemeResource。

<Rectangle  
    x:Name="GameTree" 
    HorizontalAlignment="Stretch" 
    Fill="{ThemeResource SystemControlChromeHighAcrylicWindowMediumBrush}">
</Rectangle>

但应用的丙烯酸笔刷总是回退到它的后备颜色。

如果BackgroundSource 属性为HostBackdrop。当 UWP 窗口未激活时,会从应用窗口后面的内容和FallbackColor 中恢复画笔样本。根据您的要求,您可以将BackgroundSource 设置为Backdrop。或者你可以设置FallbackColor不显眼的颜色,比如白色。

<AcrylicBrush x:Key="MyAcrylicBrush"      
    BackgroundSource="HostBackdrop"
    TintColor="#FF00ff00"
    TintOpacity="0.1"        
    FallbackColor="#F8F8FF"
  />

更多内容可以参考Acrylic material官方文档。

【讨论】:

    【解决方案2】:

    问题出在页面 xaml 元素上的指定 CacheMode="BitmapCache" 属性中。取下后,丙烯酸刷就可以正常工作了。

    【讨论】:

    • 作为参考,在您的页面根目录上设置 BitmapCache 很可能会非常对您的性能产​​生负面影响,尤其是当页面上有任何移动内容时。
    • 必须确认。用户界面现在更加活泼。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多