Подтвердить что ты не робот

Изменение непрозрачности фона без изменения непрозрачности содержимого

Я хотел знать, как изменить непрозрачность фона окна WPF без использования внутренних дочерних элементов управления. Когда я изменяю свойство Window "Opacity" на 0.5, я получаю полупрозрачное окно, но изображение внутри окна также наследует значение значения непрозрачности 0.5, поэтому как я могу просто сделать непрозрачность только для окна?

4b9b3361

Ответ 1

Окно является родительским контейнером всего, поэтому установка непрозрачности в окне будет влиять на все, что он содержит. Я думаю, что вы хотите изменить Opacity в Window.Background.

Включение окна для прозрачности включает в себя пару вещей, которые нужно добавить. Сначала вам нужно установить Window.AllowsTransparency = True, а также установить Window.WindowStyle = None. WindowStyle.None создает окно без кнопок минимизации, максимизации и закрытия в окне хром, поэтому вам придется обрабатывать это в приложении самостоятельно, изменяя размер и перемещая окно. После этого все сделанное, вы можете установить для Window.Background кисть с Opacity, установленную на ней.

В следующем примере кода будет показано, как всегда окно прозрачно и установить непрозрачность фона окна на другую непрозрачность.

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        x:Class="WpfApplication1.MainWindow"
        x:Name="Window"
        WindowStyle="None"
        AllowsTransparency="True">
    <Window.Background>
        <SolidColorBrush Color="White" Opacity="0.5"/>
    </Window.Background>
    <Grid>
        <!--Window Content-->
    </Grid>
</Window>

Вы всегда можете установить прозрачность окна фона, если хотите видеть только элементы в окне.