2017-02-09 11 views
0

イメージを自分のウィンドウの背景として設定しようとしています。私はウィンドウ上に勾配不透明マスクを適用し、画像をタイル張りにします。これまでのところ、私はどちらかを得ることができますが、両方ではありません。ここでは、この時の私のラメの試みです:イメージブラシとビジュアルブラシを組み合わせたwpfグリッドの背景

<Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height = "40*" /> 
      <RowDefinition Height="133*"/> 
     </Grid.RowDefinitions> 
     <Grid.Resources> 
      <Image x:Key="myImage" Source="/GrimshawRibbon;component/Resources/GeometricBackground.png"> 
       <Image.OpacityMask> 
        <LinearGradientBrush EndPoint = "0.5,0" StartPoint="0.5,1"> 
         <GradientStop Color = "#00000000" Offset="0.6"/> 
         <GradientStop Color = "#FF000000" Offset="1"/> 
        </LinearGradientBrush> 
       </Image.OpacityMask> 
      </Image> 
      <ImageBrush x:Key="imageBrush" ImageSource="/GrimshawRibbon;component/Resources/GeometricBackground.png" TileMode="Tile" ViewportUnits="Absolute" Viewport="0,0,800,800"/> 
      <VisualBrush x:Key="myBrush" Visual="{StaticResource myImage}" Stretch="None" TileMode="Tile"/> 
     </Grid.Resources> 
     <DockPanel LastChildFill = "False" Grid.RowSpan="2" Background="{StaticResource imageBrush}"/> 
     <ContentControl x:Name="MainContentControl" Content="{Binding CurrentPageViewModel}" Margin="10" Grid.Row="1"/> 
     <Button x:Name="btnCancel" Content="Close" Margin="0,0,90,10" HorizontalAlignment="Right" Width="75" Height="36" VerticalAlignment="Bottom" Command="{Binding CloseWindowCommand, Mode=OneWay}" CommandParameter="{Binding ElementName=win}" Grid.Row="1"/> 
     <Button x:Name="button" Content="?" Margin="0,0,170,10" Height="36" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="36" Command="{Binding NavigateToHelpCommand, Mode=OneWay}" Grid.Row="1"/> 
     <Label x:Name="label" Content="Some label" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" FontWeight="Bold" FontSize="14"/> 
     <TextBlock x:Name="textBlock" HorizontalAlignment="Left" Margin="10,39,0,0" TextWrapping="Wrap" Text="Some tool description that is not too long. It would be good to keep it under two sentences." VerticalAlignment="Top" Height="36" Width="272"/> 
    </Grid> 

答えて

1

あなたがDockPanelのOpacityMaskを割り当てることがあります。

<DockPanel Grid.RowSpan="2" Background="{StaticResource imageBrush}"> 
    <DockPanel.OpacityMask> 
     <LinearGradientBrush EndPoint="0.5,0" StartPoint="0.5,1"> 
      <GradientStop Color="#00000000" Offset="0.6"/> 
      <GradientStop Color="#FF000000" Offset="1"/> 
     </LinearGradientBrush> 
    </DockPanel.OpacityMask> 
</DockPanel> 

それともおそらく背景画像用の四角形を使用します、もちろん

<Rectangle Grid.RowSpan="2" Fill="{StaticResource imageBrush}"> 
    <Rectangle.OpacityMask> 
     <LinearGradientBrush EndPoint="0.5,0" StartPoint="0.5,1"> 
      <GradientStop Color="#00000000" Offset="0.6"/> 
      <GradientStop Color="#FF000000" Offset="1"/> 
     </LinearGradientBrush> 
    </Rectangle.OpacityMask> 
</Rectangle> 
+0

をありがとう素晴らしい答えです! – konrad

関連する問題