Considérons une fenêtre avec des charges de contrôles multicolores. Je veux mettre un panneau au-dessus de ceci quand un déclencheur se produit dans la forme de sorte que tous les contrôles perdent sa couleur (tout apparaît dans l'échelle de gris) excepté le panneau qui vient de surgir. Quelqu'un peut-il m'aider avec ça ??Passage de l'arrière-plan à l'échelle des gris dans wpf
Répondre
J'utiliserais la propriété Effect de n'importe quelle zone de client que vous souhaitez en échelle de gris. Vous devrez cependant créer votre propre pixel shader pour effectuer la conversion en échelle de gris.
http://windowsclient.net/wpf/wpf35/wpf-35sp1-more-effects.aspx
Vous pouvez tester rapidement votre concept en utilisant la classe BlurEffect au lieu d'un shader personnalisé.
<Window x:Class="WpfGrayscaleSample.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="327" Width="526">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="239*" />
<RowDefinition Height="50*" />
</Grid.RowDefinitions>
<Canvas Name="clientArea" Background="Transparent" Grid.Row="0">
<!-- Just some controls -->
<Button Height="31" Name="button1" Width="80" Canvas.Left="30" Canvas.Top="125">Button</Button>
<Button Height="28" Name="button2" VerticalAlignment="Bottom" Click="button2_Click" HorizontalAlignment="Right" Width="75" Margin="0,0,16,34" Canvas.Left="66" Canvas.Top="54">Button</Button>
<Rectangle Margin="86,43,0,0" Name="rectangle1" Stroke="Black" Fill="Crimson" Height="59" HorizontalAlignment="Left" VerticalAlignment="Top" Width="109" Canvas.Left="145" Canvas.Top="44" />
</Canvas>
<!-- Button to activate the shader effect -->
<Button Height="23" Margin="15,0,0,21" Name="button3" VerticalAlignment="Bottom" HorizontalAlignment="Left" Width="75" Grid.Row="1" Click="button3_Click">Button</Button>
</Grid>
Et le gestionnaire d'événements pour button3 serait tout simplement
private void button3_Click(object sender, RoutedEventArgs e)
{
clientArea.Effect = new BlurEffect() { Radius = 10.0 };
}
Bien sûr, il est un peu plus de travail pour brancher le shader sur mesure pour la mise à l'échelle de gris, mais le bonus du pixel shader va être la performance.
Dans votre conteneur de niveau supérieur (grille, etc.), créez simplement un rectangle dans un ZIndex inférieur (ou créez un niveau d'imbrication supplémentaire).
Lorsque vous faites apparaître votre panneau, échangez l'index ZIndex pour le rectangle entre vos contrôles et votre panneau.
En ce qui concerne les niveaux de gris, il y a probablement quelques façons astucieuses de le faire avec un VisualBrush, mais je pense que vous pourriez aller assez loin avec un SolidColorBrush semi-opaque sur le Rectangle.
merci beaucoup, votre solution semble être un bon hack – sudarsanyes
- 1. Passage à WPF. C'est l'heure?
- 2. Passage origine de ContextMenu dans WPF Commande
- 3. Niveaux de gris dans matlab
- 4. Passage de listes génériques à un contrôle utilisateur WPF
- 5. octets [] à l'échelle de gris BitmapImage
- 6. Passage des informations de EventListener à l'activité
- 7. Passage de DataContext au contrôle utilisateur dans WPF
- 8. Passage du contrôle utilisateur WPF à la fenêtre?
- 9. Flux communs gris lisp
- 10. glDrawPixels en niveaux de gris?
- 11. Passage à l'assembly dans gdb
- 12. passage des données d'une page à une autre page WPF VB.Net
- 13. C++ Passage des options à l'exécutable
- 14. Passage de Castor à JPA
- 15. Passage des paramètres à SQL Server 2008
- 16. le passage à des solutions open source
- 17. Le passage des arguments à un gestionnaire dans app.yaml
- 18. C++/Qt: passage des variables à modifier dans la classe
- 19. Échelle de gris Image provenant des données YUV420p
- 20. passage des données de session à ModelForm intérieur de ModelAdmin
- 21. directshow Renderstream échoue avec des bitmaps en niveaux de gris
- 22. Passage des paramètres dans les rails redirect_to
- 23. Android liste avec 'gris' articles
- 24. Passage de tableaux et de structures à des fonctions
- 25. passage des valeurs de forme d'un jsp à un autre
- 26. Passage d'arguments à Jquery
- 27. Passage de Vbscript à Javascript
- 28. Delphi; la performance du passage des chaînes de const contre le passage des chaînes de var
- 29. Passage d'arguments personnalisés à aapt dans Eclipse
- 30. passage de EnterpriseLibrary.Validation à Microsoft.Practices.EnterpriseLibrary.Validation.Validators à System.ComponentModel.DataAnnotations
c'est ce que je cherchais. Toi, ton effet de flou et l'idée de micahtan de changer le zorder valent vraiment la peine d'être considérées. Merci beaucoup – sudarsanyes