Mi è stato chiesto da un grafico se in windows form si riusciva a fare una splash screen un po particolare: in pratica era un rettangolo in trasparenza con ombra, con sopra del testo non opacizzato... + altre cosucce (tipico da richiesta dei grafici: questo si può fare?... questo si può mettere?...)
Ci ho provato ed in windows forms non è possibile (magari lo è ma non è così semplice come farlo in wpf)
Ecco il codice d'esempio:
1 <Window x:Class="Splash.Window1"
2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4 Title="MiaApplicazione" Height="350" Width="450"
5 WindowStyle="None"
6 AllowsTransparency="True"
7 Background="Transparent"
8 MouseLeftButtonDown="Window_MouseLeftButtonDown" >
9 <Grid>
10 <Rectangle Fill="WhiteSmoke" Opacity="0.5" Margin="10" Width="380" Height="250">
11 <Rectangle.BitmapEffect>
12 <DropShadowBitmapEffect ShadowDepth="5" Opacity="0.5"/>
13 </Rectangle.BitmapEffect>
14 </Rectangle>
15 <TextBlock Text="Babba - questa e' la splash del mio programma"
16 Margin="52" FontFamily="Tahoma" FontSize="9" />
17 <TextBlock x:Name="txtBlock" Text="WELCOME"
18 Foreground="White"
19 HorizontalAlignment="Center"
20 VerticalAlignment="Center"
21 FontSize="70"
22 FontFamily="Tahoma"
23 Loaded="txtBlock_Loaded">
24 <TextBlock.BitmapEffect>
25 <OuterGlowBitmapEffect GlowColor="YellowGreen" GlowSize="10" />
26 </TextBlock.BitmapEffect>
27 </TextBlock>
28 </Grid>
29 </Window>
30
L'animazione del testo che vedete sotto l'ho presa da un sito (non ho + l'url... cmq se ne trovano un sacco di esempi per creare da codice una animazione)
1 public partial class Window1 : Window
2 {
3 public Window1()
4 {
5 InitializeComponent();
6 }
7
8 private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
9 {
10 this.DragMove();
11 }
12
13 private void txtBlock_Loaded(object sender, RoutedEventArgs e)
14 {
15 Storyboard storyboard = new Storyboard();
16 storyboard.RepeatBehavior = RepeatBehavior.Forever;
17 storyboard.AutoReverse = true;
18
19 txtBlock.TextEffects = new TextEffectCollection();
20
21 for (int i = 0; i < txtBlock.Text.Length; i++)
22 {
23 TextEffect effect = new TextEffect();
24 effect.PositionCount = 1;
25 effect.PositionStart = i;
26
27 effect.Transform = new TranslateTransform();
28 txtBlock.TextEffects.Add(effect);
29
30 DoubleAnimation animation = new DoubleAnimation(0, 20,
31 new Duration(TimeSpan.FromSeconds(1)));
32 animation.AccelerationRatio = 0.5;
33 animation.DecelerationRatio = 0.5;
34 animation.AutoReverse = true;
35 animation.RepeatBehavior = RepeatBehavior.Forever;
36 animation.BeginTime = TimeSpan.FromSeconds(i * 0.25);
37 Storyboard.SetTargetName(animation, "txtBlock");
38
39 string path = String.Format("TextEffects[{0}].Transform.Y", i);
40 PropertyPath propPath = new PropertyPath(path);
41 Storyboard.SetTargetProperty(animation, propPath);
42 storyboard.Children.Add(animation);
43 }
44 storyboard.Begin(this);
45 }
46 }
47