Technology Experience
.NET World

Esportare in XAML con Expression Design

Se dovete creare grafica vettoriale complessa potete usare Expression Design, un altro strumento della famiglia Expression. Questo software permette di disegnare grafica vettoriale in 2D: rettangoli, circonferenze, testo, ellissi, disegno a mano libera, etc. etc. Il tutto sfruttando le potenzialità di WPF, quindi effetti grafici come gradienti, drop shadows, emboss, mosaic e chi ne ha più ne metta.

Per esempio, oggi pomeriggio, prima di andare in ospedale, ho ridisegnato il logo VivendoByte che qualche mese avevo creato con Corel Draw 12 proprio con Expression Design. Ecco qual’è il vantaggio: potete esportare l’immagine vettoriale che avete creato in codice XAML, e quindi importabile per esempio in Expression Blend.

Ecco qui sotto uno screensho del logo visto con Kaxaml:

Nella parte superiore si vede il logo, nella parte inferiore il codice XAML corrispondente. L’esportazione da Expression Design è piuttosto semplice: basta andare sul menù File e poi cliccare su Export. Appare una dialog box dove potete settare alcune impostazioni:

Potete decidere se esportare in un Canvas, in un ResourceDictionary oppure in formato Silverlight (che si occupa di eliminare tutti i componenti non supportati, per esempio il BitmapEffect che ho impostato per l’ombra azzurrina che si vede nella scritta “vivendoByte.net” nello screenshot di prima. Mentre giocate con gli option button, date un’occhiata all’anteprima che vedete sulla sinistra, perchè è piuttosto fedele al risultato finale. Dopo aver impostato il tutto, fate click sul pulsante Export ed il gioco è fatto: avete ottenuto uno XAML da importare dove volete voi.

Se siete scrupolosi, date un’occhiata allo XAML con lo strumento che preferite. Io ho usato Kaxaml perchè è veloce, rapido e…non crasha. Vi accorgerete che l’ “intelligenza” applicata da Expression Design è scarsa. Ma non potrebbe essere altrimenti: un software è pur sempre un software. Ma siccome noi siamo umani, possiamo ottimizzare moltissimo lo XAML.

Per esempio, il logo VivendoByte è formato tra le altre cose da 5 semicerchi, tutti colorati con un gradiente che va da un azzurro (#FF75C5F0) al bianco (#FFFFFFFF). Nello XAML il gradiente è espresso con un blocco come questo:

1 <LinearGradientBrush StartPoint="0.5,-0.140754" EndPoint="0.5,1.61357"> 2 <LinearGradientBrush.GradientStops> 3 <GradientStop Color="#FF75C5F0" Offset="0"/> 4 <GradientStop Color="#FFFFFFFF" Offset="1"/> 5 </LinearGradientBrush.GradientStops> 6 </LinearGradientBrush>

Queste 6 linee di codice XAML sono ripetute per 5 volte, una per ciascun semicerchio. A mano, possiamo inserire questo LinearGradientBrush in una risorsa del Canvas, dandogli ovviamente un nome tramite x:Key.

1 <Canvas.Resources> 2 <LinearGradientBrush x:Key="Arco" StartPoint="0.5,-0.140754" EndPoint="0.5,1.61357"> 3 <LinearGradientBrush.GradientStops> 4 <GradientStop Color="#FF75C5F0" Offset="0"/> 5 <GradientStop Color="#FFFFFFFF" Offset="1"/> 6 </LinearGradientBrush.GradientStops> 7 </LinearGradientBrush> 8 </Canvas.Resources>

A questo punto, troviamo nello XAML la definizione dei 5 semicerchi, fatta con oggetti di tipo Path. La cambiamo da così:

<Path x:Name="Path_17" Width="64.5164" Height="34.749" Canvas.Left="175.463" Canvas.Top="84.1736" Stretch="Fill" StrokeThickness="5" StrokeLineJoin="Round" Stroke="#FFFF7D00" Data="F1 M 177.963,116.423C 177.963,99.9927 191.287,86.6736 207.722,86.6736C 224.157,86.6736 237.48,99.9927 237.48,116.423"> <Path.Fill> <LinearGradientBrush StartPoint="0.5,-0.140754" EndPoint="0.5,1.61357"> <LinearGradientBrush.GradientStops> <GradientStop Color="#FF75C5F0" Offset="0"/> <GradientStop Color="#FFFFFFFF" Offset="1"/> </LinearGradientBrush.GradientStops> </LinearGradientBrush> </Path.Fill> </Path>

a così:

<Path x:Name="Path_17" Fill="{StaticResource Arco}" Width="64.5164" Height="34.749" Canvas.Left="175.463" Canvas.Top="84.1736" Stretch="Fill" StrokeThickness="5" StrokeLineJoin="Round" Stroke="#FFFF7D00" Data="F1 M 177.963,116.423C 177.963,99.9927 191.287,86.6736 207.722,86.6736C 224.157,86.6736 237.48,99.9927 237.48,116.423" />

La proprietà Fill fa riferimento alla risorsa denominata Arco. Il codice è molto più compatto ed efficiente; ma il vero vantaggio è che quel tipo di gradiente è definito una volta sola, all’inizio fra le risorse del Canvas, e quindi se volessimo cambiarlo dovremmo farlo in un punto solo. Lo svantaggio è che se dovessimo riesportare da Expression Design l’immagine vettoriale, dovremmo riottimizzare lo XAML, quindi…fatelo solo quando siete sicuri di aver finito!!!

Technorati Tags:   

Send to Kindle

Igor Damiani

La sua passione per l'informatica nasce nella prima metà degli anni '80, quando suo padre acquistò un Texas Instruments TI-99. Da allora ha continuato a seguire l'evoluzione sia hardware che software avvenuta nel corso degli anni. E' un utente, un videogiocatore ed uno sviluppatore software a tempo pieno. Igor ha lavorato e lavora anche oggi con le più moderne tecnologie Microsoft per lo sviluppo di applicazioni: .NET Framework, XAML, Universal Windows Platform, su diverse piattaforme, tra cui spiccano Windows 10 piattaforme mobile. Numerose sono le app che Igor ha creato e pubblicato sul marketplace sotto il nome VivendoByte, suo personale marchio di fabbrica. Adora mantenere i contatti attraverso Twitter e soprattutto attraverso gli eventi delle community .NET.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.