Как сделать несфокусированное окно акриловым?

#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