2009-11-20 203 views

回答

6

我自己回答了這個問題。這裏是一些示例代碼。

static System.Windows.Forms.Timer _Timer = new System.Windows.Forms.Timer(); 
    int _Stop = 0; 

    private void This_Loaded(object sender, RoutedEventArgs e) 
    { 
     _Timer.Tick += new EventHandler(timer_Tick); 
     _Timer.Interval = (20); 

     resize(500,500) 
    } 

    private void timer_Tick(Object myObject, EventArgs myEventArgs) 
    { 
     if (_Stop == 0) 
     { 
      _RatioHeight = ((this.Height - _Height) /12)* -1; 
      _RatioWidth  = ((this.Width - _Width) /12)* -1; 
     } 
     _Stop++; 

     this.Height += _RatioHeight; 
     this.Width += _RatioWidth; 

     if (_Stop == 12) 
     { 
      _Timer.Stop(); 
      _Timer.Enabled = false; 
      _Timer.Dispose(); 

      _Stop = 0; 

      this.Height = _Height; 
      this.Width = _Width; 
     } 
    } 

    public void resize(double _PassedHeight, double _PassedWidth) 
    { 
     _Height = _PassedHeight; 
     _Width = _PassedWidth; 

     _Timer.Enabled = true; 
     _Timer.Start(); 
    } 

非常快速地調整窗口在12個「滴答」中的速度,可以在_Timer.Interval中減慢。經過12次剔除後,將最終調整至確切大小。

希望這有助於someome。

-1
System.Windows.Threading.DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer(); 
dispatcherTimer.Tick += dispatcherTimer_Tick; 
dispatcherTimer.Interval = new TimeSpan(0,0,0,0,10); // Control animation speed/how often the tick will be called. 
dispatcherTimer.Start(); 


private void dispatcherTimer_Tick(object sender, EventArgs e) 
{ 
    if (this.Width < 500) 
    { 
      this.Width += 10; 
    } 
    else 
    { 
      DispatcherTimer timer = (DispatcherTimer)sender; 
      timer.Stop(); 
    } 
} 
4

您可以使用窗口動畫此這裏是XAML

<Window x:Class="dlgControls" Name="dlgControls" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="" Height="300" Width="300"> 

    <Window.Resources> 
     <Storyboard x:Key="showWin"> 
      <DoubleAnimation Storyboard.TargetName="dlgControls" Storyboard.TargetProperty="Height" Duration="0:0:.5" To="300" BeginTime="0:0:1"/> 
     </Storyboard> 

     <Storyboard x:Key="hideWin"> 
      <DoubleAnimation Storyboard.TargetName="dlgControls" Storyboard.TargetProperty="Height" Duration="0:0:.5" To="150" BeginTime="0:0:1"/> 
     </Storyboard> 
    </Window.Resources> 
    <Grid RenderTransformOrigin="0.5,0.5"> 
     <Button Name="btnOpen" Content="Open" HorizontalAlignment="Left" Margin="184,98,0,0" VerticalAlignment="Top" Width="75"/> 
     <Button Name="btnClose" Content="Close" HorizontalAlignment="Left" Margin="184,222,0,0" VerticalAlignment="Top" Width="75"/> 
    </Grid> 

</Window> 

動畫使用這樣的代碼

Imports System.Windows.Media.Animation 

Public Class dlgControls 
    Dim showWin As Storyboard 
    Dim hideWin As Storyboard 

    Private Sub btnOpen_Click(sender As Object, e As Windows.RoutedEventArgs) Handles btnOpen.Click 
     BeginStoryboard(showWin) 
    End Sub 

    Private Sub dlgControls_Loaded(sender As Object, e As Windows.RoutedEventArgs) Handles Me.Loaded 
     showWin = Me.Resources("showWin") 
     hideWin = Me.Resources("hideWin") 
    End Sub 

    Private Sub btnClose_Click(sender As Object, e As Windows.RoutedEventArgs) Handles btnClose.Click 
     BeginStoryboard(hideWin) 
    End Sub 
End Class 
+0

不能相信這不會有更多的選票。非常優雅,只是解決我的問題 – TaterJuice 2016-08-18 08:18:08

相關問題