将透明图像设置为窗口背景,同时仍显示背景颜色

时间:2019-04-12 08:59:42

标签: c# wpf

我正在尝试添加图像作为窗口的背景;图像是透明的PNG。我的问题是,无论何时将图像设置为背景,它都会覆盖其下的任何颜色,尽管它是透明的,但没有显示我想要的背景颜色。编译时,结果是窗口具有所需的图像作为背景,透明部分被黑色代替,而不显示我设置的背景颜色。

我对MainWindows.xaml的代码如下:

<Window x:Class="Eorzea_Timers.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:Eorzea_Timers"
    mc:Ignorable="d"        
    Title="MainWindow" Height="667" Width="375">

<Window.Background>
    <ImageBrush ImageSource="Background.png"/>
</Window.Background>

<Window.Resources>
    <Style TargetType="Window">
        <Setter Property="Background" Value="White"/>
    </Style>
</Window.Resources>

<Grid>

</Grid>

是否有可能想要我想要的东西?还是应该在图像本身中包含彩色背景?

2 个答案:

答案 0 :(得分:1)

将Image元素放入网格:

<Window ... Background="White">
    <Grid>
        <Image Source="Background.png"/>
        <Grid>
            <!-- other elements here -->
        </Grid>
    </Grid>
</Window>

或者如果出于任何原因需要使用ImageBrush,请将其用作顶级网格的背景:

<Window ... Background="White">
    <Grid>
        <Grid.Background>
            <ImageBrush ImageSource="Background.png"/>
        </Grid.Background>
        <Grid>
            <!-- other elements here -->
        </Grid>
    </Grid>
</Window>

答案 1 :(得分:0)

尝试使用VisualBrush,并创建具有所需背景颜色的形状,然后将图像放在其顶部。