Übersicht über Bitmapeffekte
Mit Bitmapeffekten können Designer und Entwickler visuelle Effekte auf gerenderte Inhalte von Windows Presentation Foundation (WPF) anwenden. Mit Bitmapeffekten können Sie z. B. einfach einen DropShadowBitmapEffect-Effekt oder einen Weichzeichnereffekt auf ein Bild oder eine Schaltfläche anwenden.
Wichtig
In .NET Framework 4 oder höher ist die BitmapEffect Klasse veraltet. Wenn Sie versuchen, die BitmapEffect Klasse zu verwenden, erhalten Sie eine veraltete Ausnahme. Die nicht veraltete Alternative zur BitmapEffect Klasse ist die Effect Klasse. In den meisten Fällen ist die Effect Klasse deutlich schneller.
WPF-Bitmapeffekte
Bitmapeffekte (BitmapEffect Objekt) sind einfache Pixelverarbeitungsvorgänge. Ein Bitmapeffekt nimmt BitmapSource als Eingabe und erzeugt nach Anwendung des Effekts ein neues BitmapSource-Element, z. B. einen Weichzeichner oder Schlagschatten. Jeder Bitmapeffekt verfügt über Eigenschaften, mit denen die Filtereigenschaften gesteuert werden können, z. B. Radius von BlurBitmapEffect.
Als Sonderfall können in WPF Effekte als Eigenschaften von Live-VisualObjekten, wie z. B. Button oder TextBox. Die Pixelverarbeitung wird angewendet und zur Laufzeit gerendert. In diesem Fall wird ein Visual zum Zeitpunkt des Renderns automatisch in sein BitmapSource-Äquivalent umgewandelt und als Eingabe in den BitmapEffect eingeführt. Die Ausgabe ersetzt das Standardrenderingverhalten des Visual-Objekts. Aus diesem Grund erzwingen BitmapEffect-Objekte, dass visuelle Elemente ausschließlich über Software gerendert werden, das heißt, es gibt keine Hardwarebeschleunigung für visuelle Elemente, wenn Effekte angewendet werden.
BlurBitmapEffect simuliert ein Objekt, das außerhalb des Fokus angezeigt wird.
OuterGlowBitmapEffect erstellt einen Farbhalo um den Rand eines Objekts.
DropShadowBitmapEffect erstellt einen Schatten hinter einem Objekt.
BevelBitmapEffect erstellt eine Abschrägung, durch die die Oberfläche des Bilds gemäß einer angegebenen Kurve angehoben wird.
EmbossBitmapEffect erstellt ein Bumpmapping des Visual, um den Eindruck von Tiefe und Textur von einer künstlichen Lichtquelle zu vermitteln.
Anmerkung
WPF-Bitmapeffekte werden im Softwaremodus gerendert. Jedes Objekt, das einen Effekt anwendet, wird auch in der Software gerendert. Leistungseinbußen entstehen vor allem, wenn Bitmapeffekte bei großen visuellen Objekten oder beim Animieren von Eigenschaften eines Bitmapeffekts verwendet werden. Dies ist nicht zu sagen, dass Sie Bitmapeffekte nicht auf diese Weise verwenden sollten, aber Sie sollten vorsichtig sein und gründlich testen, um sicherzustellen, dass Ihre Benutzer die erwartete Erfahrung erzielen.
Anmerkung
WPF-Bitmapeffekte unterstützen keine teilweise vertrauenswürdige Ausführung. Eine Anwendung muss über voll vertrauenswürdige Berechtigungen verfügen, um Bitmapeffekte zu verwenden.
Wie man einen Effekt anwendet
BitmapEffect ist eine Eigenschaft von Visual. Die Anwendung von Effekten auf Visuals, wie z. B. Button, Image, DrawingVisual oder UIElement, ist daher so einfach wie das Festlegen einer Eigenschaft. BitmapEffect kann auf ein einzelnes BitmapEffect-Objekt gesetzt werden oder es können mehrere Effekte über das BitmapEffectGroup-Objekt verkettet werden.
Im folgenden Beispiel wird veranschaulicht, wie Sie einen BitmapEffect in Extensible Application Markup Language (XAML) anwenden.
<Button Width="200">You Can't Read This!
<Button.BitmapEffect>
<!-- <BitmapEffectGroup> would go here if you wanted to apply more
then one effect to the Button. However, in this example only
one effect is being applied so BitmapEffectGroup does not need
to be included. -->
<!-- The larger the Radius, the more blurring. The default range is 20.
In addition, the KernelType is set to a box kernel. A box kernel
creates less disruption (less blur) then the default Gaussian kernel. -->
<BlurBitmapEffect Radius="10" KernelType="Box" />
</Button.BitmapEffect>
</Button>
Das folgende Beispiel veranschaulicht das Anwenden eines BitmapEffect in Code.
// Get a reference to the Button.
Button myButton = (Button)sender;
// Initialize a new BlurBitmapEffect that will be applied
// to the Button.
BlurBitmapEffect myBlurEffect = new BlurBitmapEffect();
// Set the Radius property of the blur. This determines how
// blurry the effect will be. The larger the radius, the more
// blurring.
myBlurEffect.Radius = 10;
// Set the KernelType property of the blur. A KernalType of "Box"
// creates less blur than the Gaussian kernal type.
myBlurEffect.KernelType = KernelType.Box;
// Apply the bitmap effect to the Button.
myButton.BitmapEffect = myBlurEffect;
Anmerkung
Wenn ein BitmapEffect auf einen Layoutcontainer angewendet wird, wie z. B. DockPanel oder Canvas, wird der Effekt auf die visuelle Struktur des Elements oder des Visuals angewendet, einschließlich aller untergeordneten Elemente.
Erstellen von benutzerdefinierten Effekten
WPF stellt außerdem nicht verwaltete Schnittstellen bereit, um benutzerdefinierte Effekte zu erstellen, die in verwalteten WPF-Anwendungen verwendet werden können. Weiteres Referenzmaterial zum Erstellen von benutzerdefinierten Bitmapeffekten finden Sie in der Dokumentation Nicht verwaltete WPF-Bitmapeffekte.
Weitere Informationen
.NET Desktop feedback