Windows Presentation Foundation è un framework dalle straordinarie potenzialità che oltre a lavorare in vettoriale, sfruttare la GPU, consentire trasformazioni e animazioni, permette di applicare effetti su qualsiasi elemento. Questi effetti sono rappresentati dalle classi BitmapEffect e derivate ed è esposta dalla omonima proprietà sul tipo UIElement.
In WPF sono già definiti i seguenti effetti:
- BlurBitmapEffect: applica un effetto sfuocato;
- OuterGlowBitmapEffect: crea degli aloni intorno all'oggetto;
- DropShadowBitmapEffect: applica un'ombra sull'oggetto;
- BevelBitmapEffect: applica un effetto di smussatura interna o esterna;
- EmbossBitmapEffect: applica un effetto di pietrificazione.
Un esempio rende più delle parole; ecco quindi del markup:
<StackPanel Margin="50"> <Image Source="http://gui.winfxitalia.com/images/winfxitalia.gif" Stretch="None"> <Image.BitmapEffect> <BlurBitmapEffect Radius="4" /> </Image.BitmapEffect> </Image> <Image Margin="10" Source="http://gui.winfxitalia.com/images/winfxitalia.gif" Stretch="None"> <Image.BitmapEffect> <OuterGlowBitmapEffect GlowColor="Red" GlowSize="10" Opacity="0.4" Noise="0.4" /> </Image.BitmapEffect> </Image> <Image Margin="10" Source="http://gui.aspitalia.com/images/aspitalia.gif" Stretch="None"> <Image.BitmapEffect> <DropShadowBitmapEffect Color="Blue" Direction="360" ShadowDepth="25" Softness="1" Opacity="0.5"/> </Image.BitmapEffect> </Image> <Image Margin="10" Source="http://gui.aspitalia.com/images/aspitalia.gif" Stretch="None"> <Image.BitmapEffect> <BevelBitmapEffect BevelWidth="15" EdgeProfile="CurvedOut" LightAngle="320" Relief="0.4" Smoothness="0.3"/> </Image.BitmapEffect> </Image> <Image Margin="10" Source="http://gui.aspitalia.com/images/aspitalia.gif" Stretch="None"> <Image.BitmapEffect> <EmbossBitmapEffect Relief="1" LightAngle="100" /> </Image.BitmapEffect> </Image> </StackPanel>
E questo è il risultato:
Occorre prestare attenzione al fatto che i BitmapEffect sono trasformazioni scritte con codice unmanaged che caricano sulla CPU e sono applicate a bitmap e cioè a immagini vere e proprie. Ogni volta che l'UIElement al quale è applicato l'effetto, cambia, l'operazione viene nuovamente eseguita. Si deduce quindi che l'uso dei BitmapEffect deve essere moderato. Nel caso si vogliano applicare più effetti viene in aiuto BitmapEffectGroup:
<Image Margin="10" Source="http://gui.aspitalia.com/images/aspitalia.gif" Stretch="None"> <Image.BitmapEffect> <BitmapEffectGroup> <BlurBitmapEffect Radius="2" /> <DropShadowBitmapEffect Color="Black" Direction="320" ShadowDepth="30" Softness="1" /> </BitmapEffectGroup> </Image.BitmapEffect> </Image>
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.