Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1909, comments - 2047, trackbacks - 352

My Links

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

Cookie e Privacy

Disabilita cookie ShinyStat

Microsoft MVP

My MVP Profile

Microsoft Certified Professional

Microsoft Specialist

Xamarin Certified Mobile Developer

Il mio libro su VB 2015!

Pre-ordina il mio libro su VB 2015 Pre-ordina il mio libro "Visual Basic 2015 Unleashed". Clicca sulla copertina per informazioni!

Il mio libro su WPF 4.5.1!

Clicca sulla copertina per informazioni! E' uscito il mio libro "Programmare con WPF 4.5.1". Clicca sulla copertina per informazioni!

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Follow me on Twitter!

Altri spazi

GitHub
I miei progetti open-source su GitHub

Article Categories

Archives

Post Categories

Image Galleries

Privacy Policy

WPF: Ellissi, gradienti e OpacityMask... da codice gestito

Come sapete, tutti gli elementi appartenenti all'interfaccia grafica di un'applicazione WPF possono essere creati sia tramite XAML che tramite codice managed Visual Basic e Visual C#. Uno dei motivi che mi ha portato ad apprezzare molto XAML, è che consente una netta separazione tra il disegno degli elementi appartenenti all'interfaccia grafica e il codice operativo vero e proprio dell'applicazione. Al di là dell'aspetto sostanziale (quindi separare il lavoro dei grafici da quello degli sviluppatori), l'utilizzo di XAML per il design rende il codice gestito decisamente più fluido e crea meno confusione (sebbene, in fase di run-time, il ricorso al codice managed diventi indispensabile).

Vi riporto di seguito il codice Visual Basic e Visual C# che disegna la stessa identica ellisse disegnata nel precedente post tramite XAML:

Visual Basic:

    Private Sub Window1_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded

        Dim myEllipse As New Ellipse

        myEllipse.Width = 100
        myEllipse.Height = 100

        Dim myFill As New LinearGradientBrush
        myFill.GradientStops.Add(New GradientStop(Colors.Red, 0))
        myFill.GradientStops.Add(New GradientStop(Colors.Brown, 0.8))

        myEllipse.Fill = myFill

        Dim myOpacity As New LinearGradientBrush
        myOpacity.GradientStops.Add(New GradientStop(Colors.Transparent, 0))
        myOpacity.GradientStops.Add(New GradientStop(Colors.Black, 0.45))

        myEllipse.OpacityMask = myOpacity

        Grid1.Children.Add(myEllipse)
    End Sub

Visual C#:

        private void Window1_Loaded(object sender, RoutedEventArgs e)
        {
            Ellipse myEllipse = new Ellipse();

            myEllipse.Width = 100;
            myEllipse.Height = 100;

            LinearGradientBrush myFill=new LinearGradientBrush();

            myFill.GradientStops.Add(new GradientStop(Colors.Red, 0));
            myFill.GradientStops.Add(new GradientStop(Colors.Brown, 0.8));

            myEllipse.Fill = myFill;

            LinearGradientBrush myOpacity=new LinearGradientBrush();

            myOpacity.GradientStops.Add(new GradientStop(Colors.Transparent, 0));
            myOpacity.GradientStops.Add(new GradientStop(Colors.Black, 0.45));

            myEllipse.OpacityMask = myOpacity;

            Grid1.Children.Add(myEllipse);
        }

Immaginate di dover scrivere sia il codice che implementa l'interfaccia, sia quello che gestisce il funzionamento dell'applicazione, più quello, eventuale, che modifica o crea i controlli a run-time. Come potete ben immaginare, i file di codice gestito diventerebbero di più difficile lettura. Utilizzando XAML, invece, almeno nella predisposizione dell'interfaccia di base, semplifica anche questo aspetto. Questa, comunque, non è affatto una regola da seguire, piuttosto la mia personalissima opinione :-) In ogni caso, è bene sapere come comportarsi nei confronti dei controlli anche tramite codice managed.

Alessandro

Print | posted on martedì 30 ottobre 2007 01:01 | Filed Under [ Windows Presentation Foundation ]

Powered by:
Powered By Subtext Powered By ASP.NET