Почему кисть Visual, основанная на сетке, показывает горизонтальные и вертикальные линии сетки

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

Существует возможность использовать Canvas вместо сетки и делать размещение вручную, но я бы хотел остаться с Grid и использовать 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>

1 ответ

Решение

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

<VisualBrush x:Name="DissolveInBrush" TileMode="None" >
    <VisualBrush.Visual>
        <Grid RenderOptions.EdgeMode="Aliased">
            ...
        </Grid>
    </VisualBrush.Visual>
</VisualBrush>
Другие вопросы по тегам