Übersicht über Bitmapeffekte

Mit Bitmapeffekten können Designer und Entwickler visuelle Effekte auf gerenderten Windows Presentation Foundation (WPF)-Inhalt anwenden. Mit Bitmapeffekten können Sie z. B. einfach einen DropShadowBitmapEffect-Effekt oder einen Weichzeichnereffekt auf ein Bild oder eine Schaltfläche anwenden.

Wichtig

Die BitmapEffect-Klasse ist in .NET Framework, Version 4 oder höher, veraltet. Wenn Sie versuchen, die Klasse BitmapEffect zu verwenden, erhalten Sie eine Ausnahme vom Typ „veraltet“. Die nicht veraltete Alternative zur BitmapEffect-Klasse ist die Effect-Klasse. In den meisten Situationen ist die Effect-Klasse deutlich schneller.

WPF-Bitmapeffekte

Bitmapeffekte (BitmapEffect-Objekt) sind einfache Pixelverarbeitungsvorgänge. Ein Bitmapeffekt nimmt ein BitmapSource als Eingabe und erzeugt nach Anwendung des Effekts ein neues BitmapSource, 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 Standard-Rendering-Verhalten des Visual-Objekts. Deshalb erzwingen BitmapEffect-Objekte visuelle Objekte zum ausschließlichen Rendern in der Software, d.h., dass es keine Hardwarebeschleunigung auf visuellen Objekten gibt, wenn Effekte angewendet werden.

Hinweis

WPF-Bitmapeffekte werden im Softwaremodus gerendert. Jedes Objekt, das einen Effekt anwendet, wird auch in der Software gerendert werden. Leistungseinbußen entstehen vor allem, wenn Bitmapeffekte bei großen visuellen Objekten oder beim Animieren von Eigenschaften eines Bitmapeffekts verwendet werden. Das heißt nicht, dass Sie keine Bitmapeffekte auf diese Weise verwenden dürfen, jedoch sollten Sie Vorsicht walten lassen und gründliche Tests durchführen, um sicherzustellen, dass Ihre Benutzer die Erfahrung erhalten, die Sie erwarten.

Hinweis

WPF-Bitmapeffekte unterstützen keine teilweise vertrauenswürdige Ausführung. Eine Anwendung muss volle Vertrauenswürdigkeit besitzen, um Bitmapeffekte zu verwenden.

Vorgehensweise: Anwenden eines Effekts

BitmapEffect ist eine Eigenschaft auf Visual. Die Anwendung von Effekten auf Visuals, wie z. B. Button, Image, DrawingVisual oder UIElement, ist daher so einfach wie das Setzen 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 eine 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;

Hinweis

Wenn ein BitmapEffect auf einen Layout-Container angewendet wird, wie z. B. DockPanel oder Canvas, wird der Effekt auf den visuellen Baum des Elements oder des Bildmaterials angewendet, einschließlich aller untergeordneten Elemente.

Erstellen von benutzerdefinierten Effekten

WPF bietet außerdem nicht verwaltete Schnittstellen zum Erstellen von benutzerdefinierter Effekten, die in verwalteten WPF-Anwendungen verwendet werden können. Weiteres Referenzmaterial zum Erstellen von benutzerdefinierten Bitmapeffekten fnden Sie in der Dokumentation Unmanaged WPF Bitmap Effect (Nicht verwaltete WPF-Bitmapeffekte).

Weitere Informationen