Den hintergrund Weichzeichnen des WPF-container
Letztlich, was ich will, zu erreichen, ist eine Replikation, um einige zu verlängern, der Aero-Glas-Funktionalität von WPF-content-Steuerelement.
Habe ich, wenn ich die BlurEffect
zu einem StackPanel
enthält eine TextBlock
habe, werde ich die TextBlock
's text unscharf.
Betrachten Beispiele:
Keine Unschärfe
und mit <BlurEffect Radius="5" KernelType="Gaussian"/>
Aber ist es eine WPF-Weg, um den hintergrund unscharf hinter dem panel und nicht auf seinen Inhalt?
Dem hintergrund der StackPanel
ist ein desktop, und das Fenster, dass der Gastgeber gesetzt ist AllowTransparency="True"
zu erlauben, die benutzerdefinierte-geformten look.
- Beachten Sie, dass der hintergrund nicht unscharf in deinem zweiten Bild, nur den text. Ich bin mir nicht sicher, wie einfach es sein wird, um den Effekt zu bekommen, den Sie wollen. Diese Frage sagt etwas über die Implementierung von benutzerdefinierten Shader... stackoverflow.com/questions/1304347/... Vielleicht, das würde helfen.
- Schauen Sie sich auch das p/Invoke-Zeug zu verwenden, die native Glas-API: dotnet.dzone.com/articles/aero-glass-wpf-window
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was der hintergrund des StackPanel? ImageBrush? Wenn ja, warum kann Sie anwenden BlurEffect das?
Wenn das nicht möglich ist dann versuchen Sie, diese..
1] Verwenden Sie ein Bild und zeichnen Sie es komplett über
Grid
wie ich sehe, wollen Sie nicht einTileEffect
. HinzufügenBlurEffect
dieserImage
. Stellen Sie sicher, Sie füllen das Bild der Uniformen.2] fügen Sie
StackPanel
mit transparentem hintergrund als nächsten Kind in derGrid
dh nicht die Reihenfolge der Bild-und stackpanel.3] fügen Sie
TextBlock
im StackPanel.ODER
Wenn Sie darauf bestehen, mit einem
Brush
festgelegt werden, als die backgrounnd das Bedienfeld verwenden Sie dannVisualBrush
zieht ein unscharfes Bild als hintergrund für das stackpanel-Steuerelement, stattImageBrush
.Lassen Sie mich wissen, wenn einer dieser Tipps helfen.
Nein, es ist nicht möglich. Der Effekt auf das element angewendet wird und alle seine Kinder aber Sie können ganz einfach platzieren Sie den TextBlock, der außerhalb der container, anstatt in seinem inneren.
Normalerweise würden Sie ein raster verwenden, zum Beispiel so:
In Ihrem Beispiel, das wird keinen Unterschied machen aber. Was genau versuchst du zu verwischen?
Können Sie die SetWindowCompositionAttribute auf Systeme.Fenster, aber Sie sind dann gezwungen, legen Sie den WindowStyle auf "None" und setzen Sie Ihre eigene native Windows-Funktionalität und verarbeitet. Auch Erben, die eine benutzerdefinierte Steuerung ist Recht kompliziert. Lange Geschichte kurz, es gibt BlurryControls.
Finden Sie es über NuGet durch suchen nach "BlurryControls" oder schauen Sie sich den code selbst auf GitHub. Eitherway, ich hoffe, das ist hilfreich. Es nutzt .NET 4.5.2 und funktioniert nur für Windows10, da es keine Lösung für dieses problem unter Windows8, und in früheren Versionen (Windows7 und Vista) können Sie erreichen dies durch den Zugriff auf dwmenableblurbehindwindow diese.
Auf GitHub finden Sie auch eine Beispiel-Anwendung namens BlurryWindowInvoker.
Konnte Sie diese an ein Netz.