Condividi tramite


Cenni preliminari sugli effetti bitmap

Aggiornamento: novembre 2007

Gli effetti bitmap consentono a progettisti e sviluppatori di applicare effetti visivi a contenuto Windows Presentation Foundation (WPF) dopo averlo sottoposto a rendering. Gli effetti bitmap consentono ad esempio di applicare con facilità un effetto DropShadowBitmapEffect o un effetto sfocatura a un'immagine o un pulsante.

Nel presente argomento sono contenute le seguenti sezioni.

  • Effetti bitmap WPF
  • Come applicare un effetto
  • Creazione di effetti personalizzati
  • Argomenti correlati

Effetti bitmap WPF

Gli effetti bitmap (oggettoBitmapEffect ) sono semplici operazioni di elaborazione dei pixel. Un effetto bitmap accetta un oggetto BitmapSource come input e produce un nuovo oggetto BitmapSource dopo avere applicato l'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 particolare, in WPF, gli effetti possono essere impostati come proprietà su oggetti Visual attivi, ad esempio Button o TextBox. L'elaborazione dei pixel viene applicata e sottoposta a rendering in fase di esecuzione. In questo caso, al momento del rendering, un elemento Visual viene convertito automaticamente nel relativo oggetto BitmapSource equivalente e inserito come input di BitmapEffect. L'output sostituisce il comportamento di rendering predefinito dell'elemento Visual. Ecco perché gli oggetti BitmapEffect impongono il rendering degli elementi visivi solo a livello del software, senza accelerazione hardware sugli elementi visivi quando vengono applicati gli effetti.

Nota

Gli effetti bitmap WPF vengono sottoposti a rendering in modalità software. Qualsiasi oggetto che applica un effetto verrà sottoposto a rendering in modalità software. Le prestazioni peggiorano in modo più accentuato quando si utilizzano effetti bitmap su elementi visivi di grandi dimensioni o quando si animano le proprietà di un effetto bitmap. Ciò non significa che gli effetti bitmap non devono mai essere utilizzati in questo modo, ma che è necessario prestare attenzione e fare numerosi test affinché gli utenti acquisiscano l'esperienza necessaria.

Nota

Gli effetti bitmap WPF non supportano l'esecuzione in situazioni di attendibilità parziale. Un'applicazione deve disporre di autorizzazioni di attendibilità completa per l'utilizzo degli effetti bitmap.

Come applicare un effetto

BitmapEffect è una proprietà sull'elemento Visual. Pertanto, l'applicazione di effetti a elementi visivi, ad esempio Button, Image, DrawingVisual o UIElement, è tanto semplice quanto l'impostazione di una proprietà. È possibile impostare la proprietà BitmapEffect su un singolo oggetto BitmapEffect oppure concatenare più effetti utilizzando l'oggetto BitmapEffectGroup.

Nell'esempio riportato di seguito viene illustrato come applicare un BitmapEffect in Extensible Application Markup Language (XAML).

<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 riportato di seguito 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;

Per esempi relativi all'applicazione di più effetti utilizzando l'oggetto BitmapEffectGroup, vedere Procedura: creare più effetti visivi.

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 elemento visivo, inclusi tutti gli elementi figlio.

Creazione di effetti personalizzati

In WPF sono disponibili interfacce non gestite per creare effetti personalizzati da utilizzare nelle applicazioni WPF gestite. Per materiale di riferimento aggiuntivo per la creazione di effetti bitmap personalizzati, vedere la documentazione Effetto bitmap WPF non gestito.

Per un effetto bitmap personalizzato di esempio, vedere Esempio di BitmapEffect personalizzato - RGBFilter. In questo esempio vengono illustrate le interfacce non gestite necessarie per creare un effetto personalizzato, un livello di interoperabilità gestito e un'applicazione WPF utilizzando l'effetto personalizzato.

Vedere anche

Attività

Procedura: animare un effetto visivo di sfocatura

Procedura: animare un effetto di alone

Procedura: animare un effetto visivo di ombreggiatura

Procedura: animare un effetto visivo di smusso

Procedura: animare un effetto visivo di rilievo

Concetti

Cenni preliminari sulla creazione dell'immagine

Sicurezza di Windows Presentation Foundation

Cenni preliminari sul rendering della grafica in Windows Presentation Foundation

Ottimizzazione delle prestazioni: grafica bidimensionale e creazione di immagini

Riferimenti

BitmapEffectGroup

BitmapEffectInput

BitmapEffectCollection

Unmanaged WPF Bitmap Effect