1 votes

WPF : Suppression de la transparence entre les cellules de la grille

J'ai une grille dans WPF. La grille a un arrière-plan transparent (nécessaire) et chacune des cellules a potentiellement un arrière-plan solide de couleur différente, ou peut-être aucun arrière-plan. Lorsque je place un contenu arbitraire dans ces cellules, lorsque deux cellules adjacentes ont toutes deux un fond coloré (de la même couleur ou d'une couleur différente, peu importe), il y a souvent (et de manière imprévisible) une fine ligne transparente qui les sépare, ce qui permet de voir à travers la grille au niveau de cette ligne.

Quelqu'un sait-il comment réparer ce problème ?

Edit : Je voulais le mentionner dans ma question, mais j'ai essayé d'activer SnapsToDevicePixels partout où je pouvais, sans succès.

1voto

Todd White Points 4257

Sans voir de code, je pense que vous avez besoin de SnapsToDevicePixels sur les éléments de la grille.

1voto

Donnelle Points 3285

Cela produit le même problème, mais ce n'est peut-être pas la même cause exacte. Néanmoins, si nous parvenons à résoudre ce problème, cela pourrait donner un indice sur votre problème.

`<Grid Background="Transparent"> <Grid.ColumnDefinitions> <ColumnDefinition Width="" /> <ColumnDefinition Width="" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions>

        <Grid.RowDefinitions>
            <RowDefinition Height="3*" />
            <RowDefinition Height="3*" />
            <RowDefinition Height="3*" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>

        <Label Grid.Column="0" Grid.Row="0" Background="PaleGoldenrod" />
        <Label Grid.Column="1" Grid.Row="0" Background="White" />
        <Label Grid.Column="2" Grid.Row="0" Background="PaleGoldenrod" />

        <Label Grid.Column="0" Grid.Row="1" Background="White" />
        <!-- This is in the significant cell -->
        <Label Grid.Column="1" Grid.Row="1" x:Name="SizeChangeLabel" Background="PaleGoldenrod">
            Watch this cell
        </Label>
        <Label Grid.Column="2" Grid.Row="1" Background="White" />

        <Label Grid.Column="0" Grid.Row="2" Background="PaleGoldenrod" />
        <Label Grid.Column="1" Grid.Row="2" Background="White" />
        <Label Grid.Column="2" Grid.Row="2" Background="PaleGoldenrod" />

        <Button x:Name="ReduceContentSize" Grid.Row="3" Grid.Column="0" Click="ReduceContentSize_Click">Reduce</Button>
        <Button x:Name="IncreaseContentSize" Grid.Row="3" Grid.Column="1"   Click="IncreaseContentSize_Click">Increase</Button>
        <TextBlock Grid.Row="3" Grid.Column="2" Foreground="White">
            The window is black
        </TextBlock> 
</Grid>` 

Les événements de clics ajustent la largeur minimale de l'étiquette dans la cellule centrale. Lorsque vous l'augmentez, vous obtenez des lignes qui, je suppose, correspondent à votre problème.

`private const double _sizeChangeAmount = 150;

    private void IncreaseContentSize_Click(object sender, RoutedEventArgs e)
    {
        SizeChangeLabel.MinWidth = SizeChangeLabel.ActualWidth + _sizeChangeAmount;
        SizeChangeLabel.MinHeight = SizeChangeLabel.ActualHeight + _sizeChangeAmount;   
    }

    private void ReduceContentSize_Click(object sender, RoutedEventArgs e)
    {
        if (SizeChangeLabel.MinWidth > 150)
            SizeChangeLabel.MinWidth = SizeChangeLabel.ActualWidth - _sizeChangeAmount;

        if (SizeChangeLabel.MinHeight > 150)
            SizeChangeLabel.MinHeight = SizeChangeLabel.ActualHeight - _sizeChangeAmount;
    }` 

S'agit-il d'une approximation raisonnable qui peut aider à trouver une solution ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X