Le flou de l'arrière-plan du conteneur WPF
En fin de compte, ce que je veux réaliser est une réplication dans une certaine mesure, d'un Aero glass de la fonctionnalité d'un WPF contrôle de contenu.
Si j'applique le BlurEffect
à un StackPanel
qui contient un TextBlock
, je vais avoir l' TextBlock
texte floue.
Envisager un exemples:
Pas de flou
et avec <BlurEffect Radius="5" KernelType="Gaussian"/>
Mais est-il une WPF façon de rendre flou l'arrière-plan derrière le panneau, et non pas son contenu?
Le fond de la StackPanel
est un ordinateur de bureau, et la fenêtre qui héberge, il est fixé à AllowTransparency="True"
pour permettre à l'personnalisé en forme de look.
Remarquez que le fond n'est pas floue dans votre deuxième image, juste le texte. Je ne suis pas sûr de savoir comment il sera facile d'obtenir l'effet que vous voulez. Cette quesiton dit quelque chose à propos de la mise en œuvre personnalisée shaders... stackoverflow.com/questions/1304347/... Peut-être que ça aiderait.
Consultez également cette p/Invoke trucs pour utiliser le natif de verre API: dotnet.dzone.com/articles/aero-glass-wpf-window
Consultez également cette p/Invoke trucs pour utiliser le natif de verre API: dotnet.dzone.com/articles/aero-glass-wpf-window
OriginalL'auteur Maxim V. Pavlov | 2011-10-19
Vous devez vous connecter pour publier un commentaire.
Quel est le contexte de la StackPanel? ImageBrush? Si oui, pourquoi je ne peux pas vous appliquer BlurEffect?
Si cela n'est pas possible d'essayer cette..
1] l'Utilisation d'une image et d'attirer complètement sur
Grid
je vois que vous ne voulez pas unTileEffect
. AjouterBlurEffect
à ceImage
. Assurez-vous de remplir l'image de l'uniforme.2] Puis ajouter
StackPanel
avec un fond transparent comme enfant suivant dans leGrid
c'est à dire ne pas inverser l'ordre de l'image et du stackpanel.3] Puis ajouter
TextBlock
dans StackPanel.OU
Si vous insistez sur l'utilisation d'un
Brush
être définie comme la backgrounnd du panneau, puis utilisezVisualBrush
qui dessine une image floue comme arrière-plan de la stackpanel, au lieu deImageBrush
.Laissez-moi savoir si l'un de ces conseils aider.
C'est ce que je suis en train d'essayer de l'aider avec. autant que je sache, les brosses ne peuvent pas être floue. Donc je lui ai donné les options de flou de l'image, puis de le dessiner comme un arrière-plan de la stackpanel. Même astuce est déjà donnée sur MSDN... social.msdn.microsoft.com/Forums/en-US/wpf/thread/...
Il n'a pas l'image, dans son application.
ah ok! Oubliée.
OriginalL'auteur WPF-it
non, il n'est pas possible. L'Effet est appliqué à l'élément et tous ses enfants mais vous pouvez facilement placer la TextBlock à l'extérieur du récipient, plutôt qu'à l'intérieur.
Normalement vous devriez utiliser une grille comme suit:
Dans votre exemple, qui ne fera aucune différence. Ce qui, exactement, êtes-vous essayer de flou?
OriginalL'auteur Patrick Klug
Vous pouvez utiliser le SetWindowCompositionAttribute Systèmes.De la fenêtre, mais cela vous oblige à définir le WindowStyle "Aucun" et mettre en place votre propre Fenêtre native funtionality et les poignées. Aussi hériter d'un contrôle personnalisé est assez compliqué. Longue histoire courte, il y a BlurryControls.
Vous pouvez trouver par le biais de NuGet par la navigation pour "BlurryControls" ou vérifier le code vous-même sur GitHub. Eitherway, j'espère que cela est utile. Il utilise .NET 4.5.2 et ne fonctionne que pour les Windows10, puisqu'il n'y a pas de solution à ce problème sur Windows8, et dans les versions antérieures (Windows7 et Vista) vous pouvez le faire en accédant à DwmEnableBlurBehindWindow.
Sur GitHub, vous trouverez également un exemple d'application appelé BlurryWindowInvoker.
OriginalL'auteur Jörg Flechsig
On pourrait appliquer cela à une Grille.
OriginalL'auteur Ali Al-Masry