#c# #.net #wpf #uwp
#c# #.net #wpf #uwp
Вопрос:
Когда акриловое окно расфокусировано, оно не является акриловым.
Код
<Page
x:Class="AcrilicTest.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:media="using:Windows.UI.Xaml.Media"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Page.Resources>
<media:AcrylicBrush x:Key="HostBackdropBrush"
BackgroundSource="HostBackdrop"
TintColor="LightBlue"
TintOpacity="0.6"
FallbackColor="LightSkyBlue" />
</Page.Resources>
<Grid Background="{StaticResource HostBackdropBrush}" />
</Page>
Скриншоты
Сфокусированное (акриловое):
Несфокусированное (не акриловое):
Ответ №1:
Это сделано специально. «Рендеринг акриловых поверхностей требует больших затрат графического процессора, что может увеличить энергопотребление устройства и сократить время автономной работы.» Когда окно приложения на рабочем столе отключается, акриловый фон заменяется сплошным цветом. Смотрите Акриловый материал для получения более подробной информации.
Могу ли я отключить эту функцию для красивого интерфейса?
Если вы используете фоновый акрил ( BackgroundSource="HostBackdrop"
), это невозможно. Если вы используете in-app acrylic ( BackgroundSource="Backdrop"
), в вашем случае это будет выглядеть еще лучше. Когда вашего приложения нет в активном окне рабочего стола, акрил все еще там.
<Grid>
<Grid.Resources>
<AcrylicBrush x:Key="MyAcrylicBrush"
BackgroundSource="Backdrop"
TintOpacity="0.3" TintColor="#FFFF0000" FallbackColor="#FF008000"></AcrylicBrush>
</Grid.Resources>
<Grid.Background>
<ImageBrush ImageSource="Assets/panda.jpg"></ImageBrush>
</Grid.Background>
<Rectangle Fill="{StaticResource MyAcrylicBrush}" Height="300" Width="500"></Rectangle>
</Grid>
Комментарии:
1. Могу ли я отключить эту функцию для красивого интерфейса? Я видел приложение (terminus, возможно, на electron), которое всегда акриловое.
2. Если я использую эту кисть на странице, она будет акриловой, но на белом фоне (не из обычного акрила).
<Page.Background> <AcrylicBrush BackgroundSource="Backdrop" TintOpacity="0.3" TintColor="#FFFF0000" FallbackColor="#FF008000"></AcrylicBrush> </Page.Background>
3. @Wootiae Нет. Вы неправильно поняли мой смысл. Акрил в приложении не подходит для этого сценария. Вам нужно разбираться в встроенном акриле и фоновом акриле . Одним словом, если вы хотите, чтобы фон вашего окна всегда сохранял эффект акрила, независимо от того, сфокусирован он или несфокусирован, это невозможно.
4. То, что я разрешаю вам использовать acrylic в приложении, — это обходной путь, он большую часть времени сохранит дочерние элементы пользовательского интерфейса с эффектом acrylic.
5. Это не невозможно — приложение Notepads — это UWP-приложение, которое каким-то образом отображает акрил, когда не сфокусировано: notepadsapp.com