Condividi tramite


Cenni preliminari sugli effetti bitmap

Gli effetti bitmap consentono ai designer e agli sviluppatori di applicare effetti visivi al contenuto WPF (Windows Presentation Foundation). Ad esempio, gli effetti bitmap consentono di applicare facilmente un effetto DropShadowBitmapEffect o un effetto di sfocatura a un'immagine o a un pulsante.

Importante

In .NET Framework 4 o versione successiva la classe BitmapEffect è obsoleta. Se si tenta di usare la classe BitmapEffect, si otterrà un'eccezione obsoleta. L'alternativa non obsoleta alla classe BitmapEffect è la classe Effect. Nella maggior parte dei casi, la classe Effect è notevolmente più veloce.

Effetti bitmap WPF

Gli effetti bitmap (oggettoBitmapEffect) sono semplici operazioni di elaborazione dei pixel. Un effetto bitmap accetta un BitmapSource come input e produce un nuovo BitmapSource dopo l'applicazione dell'effetto, ad esempio una sfocatura o un'ombreggiatura. Ogni effetto bitmap espone proprietà che possono controllare le proprietà di filtro, ad esempio Radius di BlurBitmapEffect.

Come caso speciale, in WPF gli effetti possono essere impostati come proprietà su oggetti Visual attivi, ad esempio un Button o TextBox. L'elaborazione dei pixel viene applicata e renderizzata in fase di esecuzione. In questo caso, al momento del rendering, un Visual viene convertito automaticamente nel relativo equivalente BitmapSource e viene fornito come input a BitmapEffect. L'output sostituisce il comportamento di rendering predefinito dell'oggetto Visual. Questo è il motivo per cui gli oggetti BitmapEffect fanno in modo che il rendering degli oggetti visivi avvenga solo tramite software, il che significa che non c'è accelerazione hardware degli oggetti visivi quando vengono applicati effetti.

Nota

Gli effetti bitmap di WPF vengono renderizzati in modalità software. Anche qualsiasi oggetto che applica un effetto verrà sottoposto a rendering nel software. Le prestazioni sono ridotte al massimo quando si usano effetti Bitmap su oggetti visivi di grandi dimensioni o le proprietà di animazione di un effetto Bitmap. Questo non significa che non dovresti usare affatto effetti bitmap in questo modo, ma dovresti usare cautela e testare accuratamente per garantire che i tuoi utenti ricevano l'esperienza che ti aspetti.

Nota

Gli effetti bitmap WPF non supportano l'esecuzione a attendibilità parziale. Un'applicazione deve disporre delle autorizzazioni di attendibilità completa per l'uso degli effetti bitmap.

Come applicare un effetto

BitmapEffect è una proprietà di Visual. L'applicazione di effetti agli elementi visivi, come un Button, Image, DrawingVisualo UIElement, è semplice come impostare una proprietà. BitmapEffect può essere impostato su un singolo oggetto BitmapEffect o più effetti possono essere concatenati usando l'oggetto BitmapEffectGroup.

L'esempio seguente illustra come applicare un BitmapEffect in 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>

Nell'esempio seguente viene illustrato come applicare un BitmapEffect nel codice.

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

Nota

Quando un BitmapEffect viene applicato a un contenitore di layout, ad esempio DockPanel o Canvas, l'effetto viene applicato alla struttura ad albero visuale dell'elemento o dell'oggetto visivo, inclusi tutti i relativi elementi figlio.

Creazione di effetti personalizzati

WPF fornisce anche interfacce non gestite per creare effetti personalizzati che possono essere usati nelle applicazioni WPF gestite. Per altri materiali di riferimento per la creazione di effetti bitmap personalizzati, vedere la documentazione Effetti bitmap WPF non gestiti.

Vedere anche