zoukankan      html  css  js  c++  java
  • WPF test animation robot(simulate blink,mouse talk)

    WPF 动画,模拟机器人眨眼,说话。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Media.Imaging;
    using System.Windows.Shapes;
    
    namespace WpfApplication9
    {
        /// <summary>
        /// Interaction logic for RobotWindow.xaml
        /// </summary>
        public partial class RobotWindow : Window
        {
            public RobotWindow()
            {
                InitializeComponent();
                sbTalk = Resources["sbTalk"] as Storyboard;
                aTalk = sbTalk.Children[0] as DoubleAnimation;
    
                sbEyeBlink = Resources["sbEyeBlink"] as Storyboard;
    
                TestDisplay();
            }
    
            Storyboard sbTalk;
            DoubleAnimation aTalk;
            Storyboard sbEyeBlink;
    
            Random rnd = new Random();
    
            void TestDisplay()
            {
    
                Talk();
                EyeBlink();
    
            }
    
            /// <summary>
            /// 随机眨眼
            /// </summary>
            void EyeBlink()
            {
                Task.Run(() =>
                {
                    while (true)
                    {
                        Thread.Sleep(1000* rnd.Next(1,5));
                        Dispatcher.Invoke(() =>
                        {
                            sbEyeBlink.Begin();
    
                        });
    
                    }
    
                });
    
    
            }
            /// <summary>
            /// 说话
            /// </summary>
            void Talk() {
                Task.Run(() =>
                {
                    while (true)
                    {
                        Thread.Sleep(600);
                        Dispatcher.Invoke(() =>
                        {
                            aTalk.From = 0;
                            aTalk.To = rnd.NextDouble();
                            sbTalk.Begin();
    
                        });
    
                    }
    
                });
    
            
            }
    
    
    
        }
    }
    
    
    
    UI:
    
    <Window x:Class="WpfApplication9.RobotWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="RobotWindow" Height="377" Width="535">
        <Window.Resources>
            <Storyboard x:Key="sbTalk">
                <DoubleAnimation AutoReverse="True" Duration="0:0:0.3" To="1" Storyboard.TargetName="t1" Storyboard.TargetProperty="ScaleY" />
            </Storyboard>
    
            <Storyboard x:Key="sbEyeBlink">
                <DoubleAnimation  AutoReverse="True" Duration="0:0:0.3" To="0" Storyboard.TargetName="eye1" Storyboard.TargetProperty="ScaleY" />
                <DoubleAnimation  AutoReverse="True" Duration="0:0:0.3" To="0" Storyboard.TargetName="eye2" Storyboard.TargetProperty="ScaleY" />
            </Storyboard>
    
    
        </Window.Resources>
        <Grid>
            <Grid Margin="0,32,74,0" HorizontalAlignment="Right" Width="388" Height="270" VerticalAlignment="Top">
    
    
                <Ellipse Name="Head" Width="245" Height="235" Stroke="#FFCDCDC2" StrokeThickness="4"
                     Fill="#FFFBEDF3" HorizontalAlignment="Center"  Margin="22,10,25,0"  VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5" >
    
                </Ellipse>
                <Ellipse Name="lEye" Width="64" Stroke="#FFCDCDC2" StrokeThickness="4"
                     Fill="#FFCDCDC2" HorizontalAlignment="Center"  Margin="97,100,227,0" RenderTransformOrigin="0.5,0.5" Height="44" VerticalAlignment="Top" >
                    <Ellipse.RenderTransform>
                        <TransformGroup>
                            <ScaleTransform x:Name="eye1" ScaleY="1"/>
                            <SkewTransform/>
                            <TranslateTransform/>
                        </TransformGroup>
                    </Ellipse.RenderTransform>
                </Ellipse>
                <Ellipse Name="rEye" Width="64" Stroke="#FFCDCDC2" StrokeThickness="4"
                     Fill="#FFCDCDC2" HorizontalAlignment="Center"  Margin="220,100,104,0" RenderTransformOrigin="0.5,0.5" Height="44" VerticalAlignment="Top" >
                    <Ellipse.RenderTransform>
                        <TransformGroup>
                            <ScaleTransform x:Name="eye2" ScaleY="1"/>
                            <SkewTransform/>
                            <TranslateTransform/>
                        </TransformGroup>
                    </Ellipse.RenderTransform>
                </Ellipse>
    
                <Ellipse Name="mouse" Width="100" Height="58" Stroke="Yellow" StrokeThickness="4"
                     Fill="#FFE2055F" HorizontalAlignment="Center"  Margin="96,151,96,61"  VerticalAlignment="Center" RenderTransformOrigin="0.5,0.5" >
                    <Ellipse.RenderTransform>
                        <TransformGroup>
                            <ScaleTransform x:Name="t1" ScaleY="0.1"/>
                            <SkewTransform/>
                            <TranslateTransform/>
                        </TransformGroup>
                    </Ellipse.RenderTransform>
                </Ellipse>
            </Grid>
        </Grid>
    </Window>
    

      

  • 相关阅读:
    20200924-4 代码规范,结对要求
    20200924-2 功能测试
    20200917-1 每周例行报告
    20200917-3 白名单
    20200917-2 词频统计 已更新附加题!
    20200910-1 每周例行报告
    20200924-2功能测试
    20200924-1每周例行报告
    20200924-3单元测试
    20200924-5 四则运算,结对
  • 原文地址:https://www.cnblogs.com/wgscd/p/12171285.html
Copyright © 2011-2022 走看看