Selector3D: un selettore tridimensionale

di Cristian Civera, in WPF,

Da quando è uscito il .NET Framework 3.0 mi sono rimesso intensamente a provarlo e sicuramente una cosa la studio meglio quando lo applico a qualcosa. A parte un'applicazione che sto scrivendo interamente in WPF e che mantengo ancora segreta :-), ho sviluppato quindi un nuovo controllo in WPF. L'idea è partita dopo che ho installato Ubuntu (non ditelo al mio capo) e provato, senza successo, XGL. Va beh, con Linux, sono un po' una schiappa, ma a forza di sudo e nano dopo un po' ho lasciato perdere.

Mi è piaciuto comunque l'effetto del cubo 3D che ruota e mostra i desktop e che sicuramente colpisce chiunque. Perciò ho creato dapprima quattro facce all'interno di un Viewport3D che ho inserito all'interno di una mia classe denominata Selector3D.

Poi ho creato un pannello custom che mostrasse un item per volta e che scompare al variare dell'indice corrente, per poi dare alle quattro facce del cubo un material basato su un VisualBrush dell'item corrente e di quello che lo precede e lo segue. Il tutto condito con un'animazione che allontana la camera, ruota il cubo sull'asse di 90 gradi e riavvicina la camera.

La classe Selector3D che ho creato eredita inoltre dall'oggetto primitivo Selector e supporta quindi molteplici items, binding, template, styling ecc e si usa quindi allo stesso modo di una ListBox, come per esempio:

<c:Selector3D x:Name="tab" ItemsSource="{Binding}" IsSynchronizedWithCurrentItem="True" ItemTemplate="{StaticResource cube}">
</c:Selector3D>

Il risultato catturando l'animazione è il seguente, dove ho caricato una struttura rappresentante i mesi dell'anno con i loro rispettivi giorni (in parte è presente una ListBox per saltare un mese con l'altro).

Selector3D - stato normale

Selector3D - animazione

Devo dire che non è stato banale, perché di 3D non sono espertissimo e il sistema di layout e containers degli items è abbastanza complesso, ma sicuramente è stato un bel esercizio.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese