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".
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. 