更改背景不透明度而不更改内容不透明度

Ida*_*ter 20 .net wpf opacity

我想知道如何在不影响内部子控件的情况下更改WPF窗口背景的不透明度.当我将Window属性'Opacity'更改为0.5时,我会得到一个半透明窗口,但窗口内的图像也继承了0.5不透明度值,那么我怎样才能只为窗口设置不透明度?

eva*_*anb 34

窗口是所有内容的父容器,因此在窗口上设置不透明度将影响它包含的所有内容.我想你想要做的是改变OpacityWindow.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>
Run Code Online (Sandbox Code Playgroud)

如果只希望窗口中的元素可见,则可以始终将窗口背景设置为透明.