zoukankan      html  css  js  c++  java
  • Metro Win8风格的按钮(Filp翻转)

    原地址->http://www.cnblogs.com/yk250/p/5661093.html

    介绍:简约而不简单....颜色可随意调制,最好用Blend工具。

    效果图如下:话说这个图会不会太大了点 0_0

    外观简单,制作也十分简单:Microsoft.Expression.Interactions.dll和System.Windows.Interactivity.dll是必不可少的!

      1 <Style x:Key="MetroButtonStyle" TargetType="{x:Type Button}">
      2             <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
      3             <!--<Setter Property="Background" Value="{StaticResource ButtonNormalBackground}"/>
      4             <Setter Property="BorderBrush" Value="{StaticResource ButtonNormalBorder}"/>-->
      5             <Setter Property="BorderThickness" Value="1"/>
      6             <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
      7             <Setter Property="HorizontalContentAlignment" Value="Center"/>
      8             <Setter Property="VerticalContentAlignment" Value="Center"/>
      9             <Setter Property="Padding" Value="1"/>
     10             <Setter Property="Template">
     11                 <Setter.Value>
     12                     <ControlTemplate TargetType="{x:Type Button}">
     13                         <ControlTemplate.Resources>
     14                             <Storyboard x:Key="Storyboard1">
     15                                 <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)" Storyboard.TargetName="contentPresenter">
     16                                     <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
     17                                     <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="20">
     18                                         <EasingDoubleKeyFrame.EasingFunction>
     19                                             <BackEase EasingMode="EaseInOut"/>
     20                                         </EasingDoubleKeyFrame.EasingFunction>
     21                                     </EasingDoubleKeyFrame>
     22                                 </DoubleAnimationUsingKeyFrames>
     23                                 <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)" Storyboard.TargetName="textBlock">
     24                                     <EasingDoubleKeyFrame KeyTime="0" Value="1"/>
     25                                     <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="1.4">
     26                                         <EasingDoubleKeyFrame.EasingFunction>
     27                                             <BackEase EasingMode="EaseOut"/>
     28                                         </EasingDoubleKeyFrame.EasingFunction>
     29                                     </EasingDoubleKeyFrame>
     30                                 </DoubleAnimationUsingKeyFrames>
     31                                 <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)" Storyboard.TargetName="textBlock">
     32                                     <EasingDoubleKeyFrame KeyTime="0" Value="1"/>
     33                                     <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="1.4">
     34                                         <EasingDoubleKeyFrame.EasingFunction>
     35                                             <BackEase EasingMode="EaseOut"/>
     36                                         </EasingDoubleKeyFrame.EasingFunction>
     37                                     </EasingDoubleKeyFrame>
     38                                 </DoubleAnimationUsingKeyFrames>
     39                                 <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)" Storyboard.TargetName="border">
     40                                     <EasingDoubleKeyFrame KeyTime="0" Value="1"/>
     41                                     <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="1.25"/>
     42                                     <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="-1.25"/>
     43                                 </DoubleAnimationUsingKeyFrames>
     44                                 <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)" Storyboard.TargetName="border">
     45                                     <EasingDoubleKeyFrame KeyTime="0" Value="1"/>
     46                                     <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="1.25"/>
     47                                 </DoubleAnimationUsingKeyFrames>
     48                             </Storyboard>
     49                             <Storyboard x:Key="Storyboard_Copy1">
     50                                 <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)" Storyboard.TargetName="contentPresenter">
     51                                     <SplineDoubleKeyFrame KeyTime="0" Value="20"/>
     52                                     <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="0">
     53                                         <EasingDoubleKeyFrame.EasingFunction>
     54                                             <BackEase EasingMode="EaseOut"/>
     55                                         </EasingDoubleKeyFrame.EasingFunction>
     56                                     </EasingDoubleKeyFrame>
     57                                 </DoubleAnimationUsingKeyFrames>
     58                                 <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)" Storyboard.TargetName="textBlock">
     59                                     <SplineDoubleKeyFrame KeyTime="0" Value="1.4"/>
     60                                     <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="1">
     61                                         <EasingDoubleKeyFrame.EasingFunction>
     62                                             <BackEase EasingMode="EaseInOut"/>
     63                                         </EasingDoubleKeyFrame.EasingFunction>
     64                                     </EasingDoubleKeyFrame>
     65                                 </DoubleAnimationUsingKeyFrames>
     66                                 <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)" Storyboard.TargetName="textBlock">
     67                                     <SplineDoubleKeyFrame KeyTime="0" Value="1.4"/>
     68                                     <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="1">
     69                                         <EasingDoubleKeyFrame.EasingFunction>
     70                                             <BackEase EasingMode="EaseInOut"/>
     71                                         </EasingDoubleKeyFrame.EasingFunction>
     72                                     </EasingDoubleKeyFrame>
     73                                 </DoubleAnimationUsingKeyFrames>
     74                             </Storyboard>
     75                             <Storyboard x:Key="Storyboard2">
     76                                 <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)" Storyboard.TargetName="Chrome">
     77                                     <EasingDoubleKeyFrame KeyTime="0" Value="1"/>
     78                                     <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="0.92">
     79                                         <EasingDoubleKeyFrame.EasingFunction>
     80                                             <BackEase EasingMode="EaseInOut"/>
     81                                         </EasingDoubleKeyFrame.EasingFunction>
     82                                     </EasingDoubleKeyFrame>
     83                                 </DoubleAnimationUsingKeyFrames>
     84                                 <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)" Storyboard.TargetName="Chrome">
     85                                     <EasingDoubleKeyFrame KeyTime="0" Value="1"/>
     86                                     <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="0.92">
     87                                         <EasingDoubleKeyFrame.EasingFunction>
     88                                             <BackEase EasingMode="EaseInOut"/>
     89                                         </EasingDoubleKeyFrame.EasingFunction>
     90                                     </EasingDoubleKeyFrame>
     91                                 </DoubleAnimationUsingKeyFrames>
     92                             </Storyboard>
     93                             <Storyboard x:Key="Storyboard_Copy2">
     94                                 <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)" Storyboard.TargetName="Chrome">
     95                                     <SplineDoubleKeyFrame KeyTime="0" Value="0.92"/>
     96                                     <SplineDoubleKeyFrame KeyTime="0:0:0.3" Value="1"/>
     97                                 </DoubleAnimationUsingKeyFrames>
     98                                 <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)" Storyboard.TargetName="Chrome">
     99                                     <SplineDoubleKeyFrame KeyTime="0" Value="0.92"/>
    100                                     <SplineDoubleKeyFrame KeyTime="0:0:0.3" Value="1"/>
    101                                 </DoubleAnimationUsingKeyFrames>
    102                             </Storyboard>
    103                             <Storyboard x:Key="Storyboard_Copy3">
    104                                 <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)" Storyboard.TargetName="contentPresenter">
    105                                     <SplineDoubleKeyFrame KeyTime="0" Value="20"/>
    106                                     <SplineDoubleKeyFrame KeyTime="0:0:0.5" Value="0"/>
    107                                 </DoubleAnimationUsingKeyFrames>
    108                                 <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)" Storyboard.TargetName="textBlock">
    109                                     <SplineDoubleKeyFrame KeyTime="0" Value="1.4"/>
    110                                     <SplineDoubleKeyFrame KeyTime="0:0:0.5" Value="1"/>
    111                                 </DoubleAnimationUsingKeyFrames>
    112                                 <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)" Storyboard.TargetName="textBlock">
    113                                     <SplineDoubleKeyFrame KeyTime="0" Value="1.4"/>
    114                                     <SplineDoubleKeyFrame KeyTime="0:0:0.5" Value="1"/>
    115                                 </DoubleAnimationUsingKeyFrames>
    116                                 <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)" Storyboard.TargetName="border">
    117                                     <SplineDoubleKeyFrame KeyTime="0" Value="-1.25"/>
    118                                     <SplineDoubleKeyFrame KeyTime="0:0:0.2" Value="1.25"/>
    119                                     <SplineDoubleKeyFrame KeyTime="0:0:0.5" Value="1"/>
    120                                 </DoubleAnimationUsingKeyFrames>
    121                                 <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)" Storyboard.TargetName="border">
    122                                     <SplineDoubleKeyFrame KeyTime="0:0:0.2" Value="1.25"/>
    123                                     <SplineDoubleKeyFrame KeyTime="0:0:0.5" Value="1"/>
    124                                 </DoubleAnimationUsingKeyFrames>
    125                             </Storyboard>
    126                         </ControlTemplate.Resources>
    127                         <Grid x:Name="Chrome"                          
    128                                 Margin="5"
    129                                 SnapsToDevicePixels="true" RenderTransformOrigin="0.5,0.5">
    130                             <Grid.RenderTransform>
    131                                 <TransformGroup>
    132                                     <ScaleTransform/>
    133                                     <SkewTransform/>
    134                                     <RotateTransform/>
    135                                     <TranslateTransform/>
    136                                 </TransformGroup>
    137                             </Grid.RenderTransform>
    138                             <Grid  Background="{TemplateBinding Background}" Opacity="0.65"/>
    139                             <Grid>
    140                                 <Grid Height="55" Width="55">
    141                                     <Border x:Name="border" Background="White" CornerRadius="250" RenderTransformOrigin="0.5,0.5">
    142                                         <Border.RenderTransform>
    143                                             <TransformGroup>
    144                                                 <ScaleTransform/>
    145                                                 <SkewTransform/>
    146                                                 <RotateTransform/>
    147                                                 <TranslateTransform/>
    148                                             </TransformGroup>
    149                                         </Border.RenderTransform>
    150                                         <StackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Center">
    151                                             <StackPanel Orientation="Horizontal">
    152                                                 <Rectangle x:Name="rectangle" Height="8" Width="8" Fill="#FF51A4DE" Opacity="0.65" RenderTransformOrigin="0.5,0.5">
    153                                                     <Rectangle.RenderTransform>
    154                                                         <TransformGroup>
    155                                                             <ScaleTransform/>
    156                                                             <SkewTransform/>
    157                                                             <RotateTransform/>
    158                                                             <TranslateTransform/>
    159                                                         </TransformGroup>
    160                                                     </Rectangle.RenderTransform>
    161                                                 </Rectangle>
    162                                                 <StackPanel Margin="3 0 0 0" Orientation="Vertical">
    163                                                     <Rectangle x:Name="rectangle1" Height="2" Fill="#FF51A4DE" Width="19" Opacity="0.65" RenderTransformOrigin="0.5,0.5">
    164                                                         <Rectangle.RenderTransform>
    165                                                             <TransformGroup>
    166                                                                 <ScaleTransform/>
    167                                                                 <SkewTransform/>
    168                                                                 <RotateTransform/>
    169                                                                 <TranslateTransform/>
    170                                                             </TransformGroup>
    171                                                         </Rectangle.RenderTransform>
    172                                                     </Rectangle>
    173                                                     <Rectangle x:Name="rectangle2" Margin="0 3 0 0" Height="2" Fill="#FF51A4DE" Width="19" Opacity="0.65" RenderTransformOrigin="0.5,0.5">
    174                                                         <Rectangle.RenderTransform>
    175                                                             <TransformGroup>
    176                                                                 <ScaleTransform/>
    177                                                                 <SkewTransform/>
    178                                                                 <RotateTransform/>
    179                                                                 <TranslateTransform/>
    180                                                             </TransformGroup>
    181                                                         </Rectangle.RenderTransform>
    182                                                     </Rectangle>
    183                                                 </StackPanel>
    184                                             </StackPanel>
    185                                             <StackPanel Margin="0 2 0 0" Orientation="Vertical">
    186                                                 <Rectangle x:Name="rectangle3" Height="2" Fill="#FF51A4DE" Width="30" Opacity="0.65" RenderTransformOrigin="0.5,0.5">
    187                                                     <Rectangle.RenderTransform>
    188                                                         <TransformGroup>
    189                                                             <ScaleTransform/>
    190                                                             <SkewTransform/>
    191                                                             <RotateTransform/>
    192                                                             <TranslateTransform/>
    193                                                         </TransformGroup>
    194                                                     </Rectangle.RenderTransform>
    195                                                 </Rectangle>
    196                                                 <Rectangle x:Name="rectangle4" Margin="0 2 0 0" Height="2" Fill="#FF51A4DE" Width="30" Opacity="0.65" RenderTransformOrigin="0.5,0.5">
    197                                                     <Rectangle.RenderTransform>
    198                                                         <TransformGroup>
    199                                                             <ScaleTransform/>
    200                                                             <SkewTransform/>
    201                                                             <RotateTransform/>
    202                                                             <TranslateTransform/>
    203                                                         </TransformGroup>
    204                                                     </Rectangle.RenderTransform>
    205                                                 </Rectangle>
    206                                             </StackPanel>
    207                                         </StackPanel>
    208                                     </Border>
    209                                 </Grid>
    210                             </Grid>
    211                             <ContentPresenter x:Name="contentPresenter"  RecognizesAccessKey="True" 
    212                                     SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="center" RenderTransformOrigin="0.5,0.5">
    213                                 <ContentPresenter.RenderTransform>
    214                                     <TransformGroup>
    215                                         <ScaleTransform/>
    216                                         <SkewTransform/>
    217                                         <RotateTransform/>
    218                                         <TranslateTransform/>
    219                                     </TransformGroup>
    220                                 </ContentPresenter.RenderTransform>
    221                             </ContentPresenter>
    222                             <TextBlock x:Name="textBlock" TextElement.FontSize="20" Margin="10" TextElement.Foreground="White" Text="{TemplateBinding Tag}" VerticalAlignment="Bottom" HorizontalAlignment="left" RenderTransformOrigin="0,1">
    223                                 <TextBlock.RenderTransform>
    224                                     <TransformGroup>
    225                                         <ScaleTransform/>
    226                                         <SkewTransform/>
    227                                         <RotateTransform/>
    228                                         <TranslateTransform/>
    229                                     </TransformGroup>
    230                                 </TextBlock.RenderTransform></TextBlock>
    231 
    232                         </Grid>
    233                         <ControlTemplate.Triggers>
    234                             <Trigger Property="IsPressed" Value="True">
    235                                 <Trigger.ExitActions>
    236                                     <BeginStoryboard x:Name="Storyboard_Copy2_BeginStoryboard" Storyboard="{StaticResource Storyboard_Copy2}"/>
    237                                 </Trigger.ExitActions>
    238                                 <Trigger.EnterActions>
    239                                     <BeginStoryboard x:Name="Storyboard2_BeginStoryboard" Storyboard="{StaticResource Storyboard2}"/>
    240                                 </Trigger.EnterActions>
    241                             </Trigger>
    242                             <EventTrigger RoutedEvent="FrameworkElement.Loaded"/>
    243                             <Trigger Property="IsMouseOver" Value="True">
    244                                 <Trigger.ExitActions>
    245                                     <BeginStoryboard x:Name="Storyboard_Copy1_BeginStoryboard" Storyboard="{StaticResource Storyboard_Copy3}"/>
    246                                 </Trigger.ExitActions>
    247                                 <Trigger.EnterActions>
    248                                     <BeginStoryboard Storyboard="{StaticResource Storyboard1}"/>
    249                                 </Trigger.EnterActions>
    250                             </Trigger>
    251                             <Trigger Property="IsKeyboardFocused" Value="true"/>
    252                             <Trigger Property="ToggleButton.IsChecked" Value="true"/>
    253                             <Trigger Property="IsEnabled" Value="false"/>
    254 
    255                         </ControlTemplate.Triggers>
    256                     </ControlTemplate>
    257                 </Setter.Value>
    258             </Setter>
    259         </Style>
    View Code

    里面凌乱的名字,请忽略吧,都是Blend自动生成的,也难得改了,将就将就吧。基本上没有什么技术难点,就是翻转一下角度,然后鼠标移上,按下,移开各自关联一个简单的动画。

    使用方法:

    1  <Button Tag="待办事项" Height="200" Width="200" Style="{DynamicResource MetroButtonStyle}">
    2             <Button.Background>
    3                 <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
    4                     <GradientStop Color="#d04f8f" Offset="1"/>
    5                     <GradientStop Color="#c84f89"/>
    6                 </LinearGradientBrush>
    7             </Button.Background>
    8         </Button>

    颜色和大小请随意。中间图形可以用其他内容代替!

  • 相关阅读:
    字符串及课堂例子整理
    大道至简:软件工程实践者的思想——第四章感想
    大道至简:软件工程实践者的思想——第一章感想(重写)
    大道至简:软件工程实践者的思想——第三章感想
    大道至简:软件工程实践者的思想——第二章感想和课后思考
    简单程序代码及心得体会
    《大 道 至 简   ——软件工程实践者的思想 》是懒人造就了方法读后感
    实验报告
    懒人的思考造就了方法
    编程其实很简单
  • 原文地址:https://www.cnblogs.com/yk250/p/5661093.html
Copyright © 2011-2022 走看看