Sdílet prostřednictvím


Přehled rastrových efektů

Rastrové efekty umožňují návrhářům a vývojářům použít vizuální efekty na vykreslený obsah WPF (Windows Presentation Foundation). Například rastrové efekty umožňují snadno použít DropShadowBitmapEffect efekt nebo rozostření na obrázek nebo tlačítko.

Důležitý

V rozhraní .NET Framework 4 nebo novější je třída BitmapEffect zastaralá. Pokud se pokusíte použít třídu BitmapEffect, zobrazí se zastaralá výjimka. Nezastaralá alternativa ke třídě BitmapEffect je třída Effect. Ve většině případů je třída Effect výrazně rychlejší.

Bitmapové efekty WPF

Rastrové efekty (BitmapEffect objekt) jsou jednoduché operace zpracování pixelů. Rastrový efekt použije BitmapSource jako vstup a po použití efektu vytvoří nový BitmapSource, například rozostření nebo stín. Každý rastrový efekt zveřejňuje vlastnosti, které mohou řídit vlastnosti filtrování, například RadiusBlurBitmapEffect.

Jako zvláštní případ lze v WPF nastavit efekty jako vlastnosti u živých Visual objektů, například Button nebo TextBox. Zpracování pixelů se provádí a vykresluje za běhu. V tomto případě se při vykreslování automaticky převede Visual na jeho BitmapSource ekvivalent a je předán jako vstup do BitmapEffect. Výstup nahradí výchozí chování vykreslování objektu Visual. Proto objekty BitmapEffect při použití efektů nutí vizuály vykreslovat pouze v softwaru, tj., u vizuálů není použita hardwarová akcelerace.

Poznámka

Rastrové efekty WPF se vykreslují v softwarovém režimu. Všechny objekty, které použijí efekt, se také vykreslí v softwaru. Při použití rastrových efektů u velkých vizuálů nebo animování vlastností rastrového efektu je výkon nejvíce snížený. To neznamená říct, že byste neměli vůbec používat bitmapové efekty tímto způsobem, ale měli byste jednat obezřetně a důkladně testovat, aby vaši uživatelé získali očekávanou zkušenost.

Poznámka

Rastrové efekty WPF nepodporují provádění částečné důvěryhodnosti. Aby aplikace používala rastrové efekty, musí mít úplná oprávnění důvěryhodnosti.

Jak použít efekt

BitmapEffect je vlastnost Visual. Proto použití efektů u vizuálů, jako je například Button, Image, DrawingVisualnebo UIElement, je stejně snadné jako nastavení vlastnosti. BitmapEffect lze nastavit na jeden objekt BitmapEffect nebo více efektů lze zřetězit pomocí objektu BitmapEffectGroup.

Následující příklad ukazuje, jak použít BitmapEffect v jazyku XAML (Extensible Application Markup Language).

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

Následující příklad ukazuje, jak použít BitmapEffect v kódu.

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

Poznámka

Pokud se BitmapEffect použije u kontejneru rozložení, například DockPanel nebo Canvas, efekt se použije na vizuální strom prvku nebo vizuálu, včetně všech jeho podřízených prvků.

Vytváření vlastních efektů

WPF také poskytuje nespravovaná rozhraní pro vytváření vlastních efektů, které lze použít ve spravovaných aplikacích WPF. Další referenční materiály pro vytváření vlastních rastrových efektů naleznete v dokumentaci Nespravovaný WPF Bitmap Effect.

Viz také