Condividi tramite


Cenni preliminari sugli effetti bitmap

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.

Nota importanteImportante

In .NET Framework 4 o versione successiva, la classe BitmapEffect è obsoleta.Se si tenta di utilizzare la classe BitmapEffect, si otterrà un'eccezione obsoleta.L'alternativa non obsoleta alla classe BitmapEffect è la classe Effect.La classe Effect consente di eseguire le operazioni in modo notevolmente più rapido.

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. Per questo motivo 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.

  • BlurBitmapEffect simula un oggetto sfuocato.

  • Tramite OuterGlowBitmapEffect viene creato un alone di colore intorno al perimetro di un oggetto.

  • Tramite DropShadowBitmapEffect viene creata un'ombra dietro un oggetto.

  • Tramite BevelBitmapEffect viene creata una smussatura che solleva la superficie di un'immagine secondo una curva specificata.

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

NotaNota

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.

NotaNota

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 è 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;
NotaNota

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.

Vedere anche

Riferimenti

BitmapEffectGroup

BitmapEffectInput

BitmapEffectCollection

Unmanaged WPF Bitmap Effect

Concetti

Cenni preliminari sulla creazione dell'immagine

Sicurezza (WPF)

Cenni preliminari sul rendering della grafica WPF

Ottimizzazione delle prestazioni: grafica bidimensionale e creazione di immagini