SkewTransform とは?
SkewTransform って何だろと思って MSDN ライブラリを読むと、「2 次元傾斜を表します。」とある。さらに、「SkewTransform は、2 次元オブジェクトで 3 次元的な奥行の効果を演出する場合に役立ちます。」だそうな。
さっぱりわからないので、アニメーションするデモを書いてみた。さいわい Silverlight にもあるので、Silverlight で公開。
X ボタンを押すと X だけ傾けるアニメを繰り返す。Y ボタンを押すと Y だけ傾けるアニメを(ry
XY ボタンを押すと ( ゚д゚)ポカーン
びっくりしました…。そうきますか。
どうぞお試しあれ。
http://siokoshou.googlepages.com/SkewTest.html
ソース
<UserControl x:Class="SkewTest.Page" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="300" Height="300"> <UserControl.Resources> <Style x:Key="ButtonStyle" TargetType="Button"> <Setter Property="Margin" Value="5" /> </Style> <Storyboard x:Name="X"> <DoubleAnimation Storyboard.TargetName="trans" Storyboard.TargetProperty="AngleX" From="0" To="360" Duration="0:0:5" RepeatBehavior="Forever" /> </Storyboard> <Storyboard x:Name="Y"> <DoubleAnimation Storyboard.TargetName="trans" Storyboard.TargetProperty="AngleY" From="0" To="360" Duration="0:0:5" RepeatBehavior="Forever" /> </Storyboard> <Storyboard x:Name="XY"> <DoubleAnimation Storyboard.TargetName="trans" Storyboard.TargetProperty="AngleX" From="0" To="360" Duration="0:0:5" RepeatBehavior="Forever" /> <DoubleAnimation Storyboard.TargetName="trans" Storyboard.TargetProperty="AngleY" From="0" To="360" Duration="0:0:5" RepeatBehavior="Forever" /> </Storyboard> <Storyboard x:Name="Null" /> </UserControl.Resources> <Grid x:Name="LayoutRoot" Background="White"> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <StackPanel Width="50"> <Button Style="{StaticResource ButtonStyle}" Name="ButtonX" Content="X" Click="Button_Click" /> <Button Style="{StaticResource ButtonStyle}" Name="ButtonY" Content="Y" Click="Button_Click" /> <Button Style="{StaticResource ButtonStyle}" Name="ButtonXY" Content="XY" Click="Button_Click" /> </StackPanel> <Button Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" Name="Stop" Content="Stop" Padding="8" Click="Button_Click"> <Button.RenderTransform> <SkewTransform x:Name="trans" CenterX="0" CenterY="0" AngleX="0" AngleY="0" /> </Button.RenderTransform> </Button> </Grid> </UserControl>
using System.Collections.Generic; using System.Windows; using System.Windows.Controls; using System.Windows.Media.Animation; namespace SkewTest { public partial class Page : UserControl { private Dictionary<Button, Storyboard> dic; public Page() { InitializeComponent(); this.dic = new Dictionary<Button, Storyboard> { { this.ButtonX, this.X }, { this.ButtonY, this.Y }, { this.ButtonXY, this.XY }, { this.Stop, this.Null } }; } private void Button_Click( object sender, RoutedEventArgs e ) { foreach ( var item in this.dic.Values ) { item.Stop(); } var s = this.dic[ ( Button ) sender ]; s.Begin(); } } }
このアニメ、アプリで使われたらうざいですね(^^;