Vito Arconzo's Blog

.net, .net, .net & windows presentation foundation

Una Window trasparente con WPF

Una delle caratteristiche che fanno più "scena" nelle demo WPF sono i Forms (anzi...Windows) con trasparenze e forme "non standard".

Untitled

Con Windows Presentation Foundation è molto semplice creare interfacce simili a quella in figura (non che sia granchè...però ).

Innanzitutto impostiamo le property WindowStyle, AllowTransparency e Background dell'oggetto Window:

<Window x:Class="TransparentWindowSample.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="TransparentWindowSample" Height="300" Width="300"
    WindowStartupLocation="CenterScreen" WindowStyle="None"
    AllowsTransparency="True" Background="Transparent"
    MouseLeftButtonDown="Window_MouseLeftButtonDown"
    >
    <Grid>

    </Grid>
</Window>

A questo punto, per creare la forma rettangolare con gli angoli arrotondati utilizzeremo, semplicemente, un oggetto Rectangle di WPF.

<Rectangle Fill="Aquamarine"
           Margin="20" Opacity="0.5" RadiusX="10" RadiusY="10" >
</Rectangle>

E per creare l'effetto ombra applicheremo al rettangolo un BitmapEffect.

<Rectangle.BitmapEffect>
  <DropShadowBitmapEffect/>
</Rectangle.BitmapEffect>

Cosi facendo, però, la nostra Window non potrà più essere spostata visto che sono stati eliminati tutti i bordi che permettono questa operazione. Per ovviare questo problema, nell'evento Window_MouseLeftButtonDown utilizzeremo il metodo this.DragMove().

void Window_MouseLeftButtonDown(object sender, EventArgs e) 
{
    this.DragMove();
}

In questo modo la Window sarà "draggabile" in qualsiasi punto della sua area di disegno.

Posted: Jun 22 2007, 11:16 PM by VitoA | with no comments
Filed under: