如何在WPF中使不透明度变深

时间:2019-01-10 08:50:41

标签: c# wpf xaml

当用户单击某个按钮时,我的主窗口背景颜色为Background="#005075",弹出一些小窗口,然后我改变了主窗口的不透明度,如Opacity="0.5",问题在于背景打火机,我该如何在WPF中做暗调?

2 个答案:

答案 0 :(得分:2)

我做了很多类似的事情。最好的方法是在Window中有几个顶级网格,然后使用它们而不是Window本身。

例如,我会做这样的事情:

<Window x:Class="WpfApp9.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp9"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <!-- Background grid with 100% opacity -->
        <Grid Background="#005075"/>
        <!-- main grid, which sits on top of the background grid -->
        <Grid x:Name="MainGrid" Background="Transparent" Opacity="0.5">
            <!-- Windows controls go here -->
        </Grid>
    </Grid>
</Window>

答案 1 :(得分:1)

不透明度不会使其变暗。您可以做的是,可以制作某种面板,该面板在整个主窗口中拉伸,并且具有黑色和0.2或类似的不透明度,并且默认情况下主要是隐藏的。而当您要禁用主窗口时,则使该面板可见。这应该可以解决您的问题。

如果您在中间添加了一些动画或类似内容,您也可以将其用作加载面板。因此,它将覆盖您主窗口的所有内容,并且不允许用户在禁用时与您的主窗口进行交互。

P.S。不透明度为0.2的黑色面板应放置在主窗口的所有控件上