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.
Tramite BlurBitmapEffect si ottiene l'effetto che si otterrebbe osservando un oggetto attraverso una lente sfocata. Per un esempio, vedere Procedura: applicare un effetto di sfocatura a un oggetto Visual.
Tramite OuterGlowBitmapEffect viene creato un alone di colore intorno al perimetro di un oggetto. Per un esempio, vedere Procedura: creare un effetto alone sul bordo esterno di un oggetto.
Tramite DropShadowBitmapEffect viene creata un'ombra dietro un oggetto. Per un esempio, vedere Procedura: creare un effetto visivo di ombreggiatura.
Tramite BevelBitmapEffect viene creata una smussatura che solleva la superficie di un'immagine secondo una curva specificata. Per un esempio, vedere Procedura: creare un effetto visivo smussato.
Tramite EmbossBitmapEffect viene creato un bump mapping di un oggetto Visual per dare l'impressione di profondità e trama dovute all'esposizione a una sorgente di luce artificiale. Per un esempio, vedere Procedura: creare un effetto visivo di rilievo.
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