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?...)

Welcome

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