2014-02-09 2 views
0

Если вы проверите код ниже и любое яркое изображение, вы увидите 4 столбца и 4 строки, нарисованные поверх используемого изображения. Мне нужна эта конфигурация для использования для какого-то эффекта. В основном я сделал это, и он работает, но эти линии сетки я хотел бы удалить и не знаю, как это сделать. Возможно, это связано с реализацией самого элемента управления сеткой? Свойство Grid ShowGridlines является ложным.Почему визуальная кисть, основанная на сетке, показывает горизонтальные и вертикальные линии сетки.

Существует возможность использовать холст вместо сетки и вручную разместить это место, но я хотел бы остаться с сеткой и использовать Canvas в качестве последнего решения.

<Image Source="/Image1.tif" Visibility="Visible" > 
     <Image.OpacityMask> 
      <VisualBrush x:Name="DissolveInBrush" TileMode="None" > 
       <VisualBrush.Visual> 
        <Grid> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="50" /> 
          <ColumnDefinition Width="50" /> 
          <ColumnDefinition Width="50" /> 
          <ColumnDefinition Width="50" /> 
         </Grid.ColumnDefinitions> 
         <Grid.RowDefinitions> 
          <RowDefinition Height="50" /> 
          <RowDefinition Height="50" /> 
          <RowDefinition Height="50" /> 
          <RowDefinition Height="50" /> 
         </Grid.RowDefinitions> 
         <Rectangle Grid.Column="0" Grid.Row="0" Fill="#FF000000" StrokeThickness="0" Stroke="Transparent"/> 
         <Rectangle Grid.Column="1" Grid.Row="0" Fill="#FF000000" StrokeThickness="0" Stroke="Transparent"/> 
         <Rectangle Grid.Column="2" Grid.Row="0" Fill="#FF000000" StrokeThickness="0" Stroke="Transparent"/> 
         <Rectangle Grid.Column="3" Grid.Row="0" Fill="#FF000000" StrokeThickness="0" Stroke="Transparent"/> 
         <Rectangle Grid.Column="4" Grid.Row="0" Fill="#FF000000" StrokeThickness="0" Stroke="Transparent"/> 

         <Rectangle Grid.Column="0" Grid.Row="1" Fill="#FF000000" StrokeThickness="0" Stroke="Transparent"/> 
         <Rectangle Grid.Column="1" Grid.Row="1" Fill="#FF000000" StrokeThickness="0" Stroke="Transparent"/> 
         <Rectangle Grid.Column="2" Grid.Row="1" Fill="#FF000000" StrokeThickness="0" Stroke="Transparent"/> 
         <Rectangle Grid.Column="3" Grid.Row="1" Fill="#FF000000" StrokeThickness="0" Stroke="Transparent"/> 
         <Rectangle Grid.Column="4" Grid.Row="1" Fill="#FF000000" StrokeThickness="0" Stroke="Transparent"/> 

         <Rectangle Grid.Column="0" Grid.Row="2" Fill="#FF000000" StrokeThickness="0" Stroke="Transparent"/> 
         <Rectangle Grid.Column="1" Grid.Row="2" Fill="#FF000000" StrokeThickness="0" Stroke="Transparent"/> 
         <Rectangle Grid.Column="2" Grid.Row="2" Fill="#FF000000" StrokeThickness="0" Stroke="Transparent"/> 
         <Rectangle Grid.Column="3" Grid.Row="2" Fill="#FF000000" StrokeThickness="0" Stroke="Transparent"/> 
         <Rectangle Grid.Column="4" Grid.Row="2" Fill="#FF000000" StrokeThickness="0" Stroke="Transparent"/> 

         <Rectangle Grid.Column="0" Grid.Row="3" Fill="#FF000000" StrokeThickness="0" Stroke="Transparent"/> 
         <Rectangle Grid.Column="1" Grid.Row="3" Fill="#FF000000" StrokeThickness="0" Stroke="Transparent"/> 
         <Rectangle Grid.Column="2" Grid.Row="3" Fill="#FF000000" StrokeThickness="0" Stroke="Transparent"/> 
         <Rectangle Grid.Column="3" Grid.Row="3" Fill="#FF000000" StrokeThickness="0" Stroke="Transparent"/> 
         <Rectangle Grid.Column="4" Grid.Row="3" Fill="#FF000000" StrokeThickness="0" Stroke="Transparent"/> 
        </Grid> 
       </VisualBrush.Visual> 
      </VisualBrush> 
     </Image.OpacityMask> 
    </Image> 

ответ

0

Вы можете установить RenderOptions.EdgeMode свойства Aliased на сетке, чтобы избежать этого эффекта:

<VisualBrush x:Name="DissolveInBrush" TileMode="None" > 
    <VisualBrush.Visual> 
     <Grid RenderOptions.EdgeMode="Aliased"> 
      ... 
     </Grid> 
    </VisualBrush.Visual> 
</VisualBrush> 
+0

Великое это сработало! Он удалил края. – Patrik