Condividi tramite


Panoramica sugli effetti bitmap

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

Importante

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

Effetti bitmap WPF

Gli effetti bitmap (BitmapEffect oggetto ) sono semplici operazioni di elaborazione pixel. Un effetto bitmap accetta come BitmapSource input e produce un nuovo oggetto 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 .BlurBitmapEffect

Come caso speciale, in WPF gli effetti possono essere impostati come proprietà su oggetti attivi Visual , ad esempio un Button oggetto o TextBox. L'elaborazione dei pixel viene applicata e sottoposta a rendering in fase di esecuzione. In questo caso, al momento del rendering, un Visual oggetto viene convertito automaticamente nell'equivalente BitmapSource e viene immesso come input in BitmapEffect. L'output sostituisce il Visual comportamento di rendering predefinito dell'oggetto. Ecco perché BitmapEffect gli oggetti forzano il rendering degli oggetti solo nel software, ovvero nessuna accelerazione hardware sugli oggetti visivi quando vengono applicati effetti.

Nota

Il rendering degli effetti bitmap WPF viene eseguito in modalità software. e anche qualsiasi oggetto che applica un effetto verrà sottoposto a rendering in modalità software. Le prestazioni diminuiscono in modo più sensibile quando si usano 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 debbano mai essere usati in questo modo, ma che è necessario prestare attenzione ed eseguire numerosi test affinché gli utenti acquisiscano l'esperienza necessaria.

Nota

Gli effetti bitmap WPF non supportano l'esecuzione di attendibilità parziale. Per l'uso degli effetti bitmap, un'applicazione deve disporre di autorizzazioni di attendibilità completa.

Come applicare un effetto

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

L'esempio seguente illustra come applicare un oggetto 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 oggetto 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 oggetto 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 materiale di riferimento aggiuntivo per la creazione di effetti bitmap personalizzati, vedere la documentazione Unmanaged WPF Bitmap Effect (Effetto bitmap WPF non gestito).

Vedi anche