zoukankan      html  css  js  c++  java
  • WPF中连续旋转时角度错误的问题

    <Window x:Class="ImageZoomTest.Window1"
    xmlns
    ="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" WindowState="Maximized">
      
    <Grid Margin="0" Name="gridMain">
        
    <Grid.ColumnDefinitions>
          
    <ColumnDefinition Width="0.7*"/>
          
    <ColumnDefinition Width="0.3*"/>
        
    </Grid.ColumnDefinitions>
        
    <DockPanel Grid.Column="0">
          
    <Image Name="imageLarge" Source="Image\1600XMAS_3001.jpg" Width="800" Height="500">
              
    <Image.RenderTransform>
                
    <RotateTransform x:Name="imageLargeRotateTransform" Angle="0"/>
              
    </Image.RenderTransform>
            
    </Image>
        
    </DockPanel>
        
    <DockPanel Grid.Column="1">
          
    <Button Name="btnRotateClockwise" Content="Rotate clockWise" DockPanel.Dock="Bottom" >
            
    <Button.Triggers>
              
    <EventTrigger RoutedEvent="Button.Click">
                
    <BeginStoryboard>
                  
    <Storyboard>
                    
    <DoubleAnimation Storyboard.TargetName="imageLargeRotateTransform" Storyboard.TargetProperty="Angle" By="90" Duration="0:0:1" />
                  
    </Storyboard>
                
    </BeginStoryboard>
              
    </EventTrigger>
            
    </Button.Triggers>
          
    </Button>
        
    </DockPanel>
      
    </Grid>
    </Window>
    上面这段代码的效果是点击一下button,图片顺时针旋转90度,动画时间是1秒针。如果点击按钮时候比较慢,两次点击的间隔大于1秒,运行正常。但是如果点击的很快,第一次点击的动画还没有结束,第二次点击的动画又开始了,图片最后停止时停留的角度就有问题了。

    解决这种现象的方法很简单,只要在BeginStoryboard里面设置HandoffBehavior属性为Compose就可以了: <BeginStoryboard HandoffBehavior ="Compose" >。
  • 相关阅读:
    运算符的优先级
    运算符
    值类型与引用类型的区别
    进制转换
    Java总结第二期
    Java总结第一期
    库存管理系统
    MyBank后感
    day72
    day71
  • 原文地址:https://www.cnblogs.com/pdfw/p/1154725.html
Copyright © 2011-2022 走看看