将图像和solidcolor背景组合成WPF表单

时间:2009-02-04 19:19:46

标签: wpf background

我正在构建一个WPF表单。我想为窗口指定一个背景图像,这很容易。但是,我还想指定一种颜色,以使图像未覆盖的表格区域为白色。我已经看到一些示例显示使用两个不同的背景画笔,但当我尝试VS.NET告诉我,我不能有多个画笔。

这是我正在使用的XAML

<Window x:Class="Consent.Client.Shell"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:cal="http://www.codeplex.com/CompositeWPF"
    Title="Shell" WindowStyle="None" WindowState="Maximized" FontSize="24">
    <Window.Background>
        <ImageBrush AlignmentX="Left" AlignmentY="Top"  Stretch="None" TileMode="None" ImageSource="logo_header2.png" />
    </Window.Background>
    <ItemsControl Background="White" VerticalAlignment="Center" cal:RegionManager.RegionName="MainRegion" >
    </ItemsControl>
</Window>

这适用于图像,但图像未覆盖的背景为黑色。我怎么把它变成白色?改变图像本身并不是一种选择。

3 个答案:

答案 0 :(得分:7)

试试这个(我删除了与问题没有直接关系的所有内容,以使代码更清晰):

<Window x:Class="Consent.Client.Shell"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Background="White">
   <Grid>
      <Grid.Background>
         <ImageBrush ImageSource="logo_header2.png" />
      </Grid.Background>
      <ItemsControl>
      </ItemsControl>
   </Grid>
</Window>

基本上,将窗口的背景设置为图像颜色的背后,而不是在窗口中放置网格并为网格提供背景图像,将所有内容放在网格内而不是直接放在窗口中。

答案 1 :(得分:3)

作为Nirs答案的延伸。如果您希望在内容周围留出边距,但让背景图像能够填满整个窗口,您还可以使用边框堆叠背景:

<Window x:Class="Consent.Client.Shell"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Background="White">

    <Border Padding="10">
        <Border.Background>
            <ImageBrush ImageSource="logo_header2.png" />
        </Border.Background>
     <!--<Your content >-->
    </Border>

</Window>

答案 2 :(得分:1)

我不确定你可以组合刷子。你可以玩ImageBrush,或者你可以忘记“背景”并在网格中将项目叠加在一起:

<Window x:Class="Consent.Client.Shell"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:cal="http://www.codeplex.com/CompositeWPF"
    Title="Shell" WindowStyle="None" WindowState="Maximized" FontSize="24">
    <Grid>
        <Image Source="logo_header2.png" Stretch="None" VerticalAlignment="Top" />
        <ItemsControl Background="White" VerticalAlignment="Center" cal:RegionManager.RegionName="MainRegion" >
        </ItemsControl>
    </Grid>
</Window>