Übersicht über Bitmapeffekte

Aktualisiert: November 2007

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

Dieses Thema enthält folgende Abschnitte.

  • WPF-Bitmapeffekte
  • So wird eine Effekt angewendet
  • Erstellen von benutzerdefinierten Effekten
  • Verwandte Abschnitte

WPF-Bitmapeffekte

Bitmapeffekte (BitmapEffect-Objekt) sind einfache Pixelverarbeitungsvorgänge. Ein Bitmapeffekt akzeptiert eine BitmapSource als Eingabe und erzeugt eine neue BitmapSource nach Anwenden des Effekts, z. B. eines Weichzeichners oder Schlagschattens. Jeder Bitmapeffekt macht Eigenschaften verfügbar, die die Filtereigenschaften steuern können, z. B. Radius von BlurBitmapEffect.

Als Spezialfall können in WPF Effekte als Eigenschaften für aktive Visual-Objekte festgelegt werden, z. B. eine Button oder ein TextBox. Die Pixelverarbeitung wird angewendet und zur Laufzeit gerendert. In diesem Fall wird zur Renderingzeit ein Visual automatisch in die BitmapSource-Entsprechung konvertiert und dient als Eingabe für den BitmapEffect. Die Ausgabe ersetzt das Standardrenderingverhalten des Visual-Objekts. Aus diesem Grund erzwingen BitmapEffect-Objekte, dass visuelle Objekte ausschließlich in der Software gerendert werden, d. h. visuelle Objekte müssen ohne Hardwarebeschleunigung auskommen, wenn Effekte angewendet werden.

Tipp

WPF-Bitmapeffekte werden im Softwaremodus gerendert. Jedes Objekt, das einen Effekt anwendet, wird auch in der Software gerendert. Die Leistung wird am stärksten beeinträchtigt, wenn Bitmapeffekte für große visuelle Objekte verwendet oder Eigenschaften eines Bitmapeffekts animiert werden. Das bedeutet nicht, dass Sie überhaupt keine Bitmapeffekte auf diese Art einsetzen sollten, aber Sie sollten vorsichtig damit umgehen und mit gründlichen Tests sicherstellen, dass die Benutzerfreundlichkeit erhalten bleibt.

Tipp

WPF-Bitmapeffekte unterstützen keine Ausführung unter teilweiser Vertrauenswürdigkeit. Eine Anwendung muss über Berechtigungen für volle Vertrauenswürdigkeit verfügen, um Bitmapeffekte zu verwenden.

So wird eine Effekt angewendet

BitmapEffect ist eine Eigenschaft für Visual. Daher ist das Anwenden von Effekten auf visuelle Objekte, z. B. eine Button, ein Image, DrawingVisual oder UIElement, so einfach wie das Festlegen einer Eigenschaft. BitmapEffect kann auf ein einzelnes BitmapEffect-Objekt festgelegt werden, oder mehrere Effekte können mithilfe des BitmapEffectGroup-Objekts verkettet werden.

Im folgenden Beispiel wird die Anwendung eines BitmapEffect in Extensible Application Markup Language (XAML) veranschaulicht.

<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>

Im folgenden Beispiel wird die Anwendung eines BitmapEffect in Code veranschaulicht.

// 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;

Beispiele, in denen gezeigt wird, wie mehrere Effekte mithilfe des BitmapEffectGroup-Objekts angewendet werden, finden Sie unter Gewusst wie: Erstellen mehrerer visueller Effekte.

Tipp

Wenn ein BitmapEffect auf einen Layoutcontainer angewendet wird, z. B. DockPanel oder Canvas, wird der Effekt auf die visuelle Struktur des Elements oder visuellen Objekts angewendet, einschließlich aller untergeordneter Elemente.

Erstellen von benutzerdefinierten Effekten

WPF stellt auch 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 Unmanaged WPF Bitmap Effect.

Ein Beispiel für einen benutzerdefinierten Bitmapeffekt finden Sie unter Beispiel für benutzerdefinierten BitmapEffect: RGBFilter. Dieses Beispiel enthält die nicht verwalteten Schnittstellen, die zum Erstellen eines benutzerdefinierten Effekts benötigt werden, eine verwaltete Interoperabilitätsschicht und eine WPF-Anwendung, die den benutzerdefinierten Effekt verwendet.

Siehe auch

Aufgaben

Gewusst wie: Animieren eines visuellen Weichzeichnereffekts

Gewusst wie: Animieren eines Leuchteffekts

Gewusst wie: Animieren eines visuellen Schlagschatteneffekts

Gewusst wie: Animieren eines abgeschrägten visuellen Effekts

Gewusst wie: Animieren eines geprägten visuellen Effekts

Konzepte

Übersicht über die Bildverarbeitung

Windows Presentation Foundation-Sicherheit

Übersicht über das Grafikrendering in Windows Presentation Foundation

Optimieren der Leistung: 2D-Grafiken und Bildverarbeitung

Referenz

BitmapEffectGroup

BitmapEffectInput

BitmapEffectCollection

Unmanaged WPF Bitmap Effect