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>

  

WPF test animation robot(simulate blink,mouse talk)的更多相关文章

  1. 【笔记】WPF实现ViewPager引导界面效果及问题汇总

    最近在开发项目的首次使用引导界面时,遇到了问题,引导界面类似于安卓手机ViewPager那样的效果,希望通过左右滑动手指来实现切换不同页面,其间伴随动画. 实现思路: 1.界面布局:新建一个UserC ...

  2. WPF与缓动(一) N次缓动

    原文:WPF与缓动(一) N次缓动   WPF与缓动(一)  N次缓动                                                                  ...

  3. WPF 程序鼠标在窗口之外的时候,控件拿到的鼠标位置在哪里?

    原文:WPF 程序鼠标在窗口之外的时候,控件拿到的鼠标位置在哪里? 在 WPF 程序中,我们有 Mouse.GetPosition(IInputElement relativeTo) 方法可以拿到鼠标 ...

  4. WPF中属性经动画处理后无法更改的问题

    在WPF的Animation中,有一个属性为FillBehavior,用于指定时间线在其活动周期结束后但其父时间线仍处于活动周期或填充周期时的行为方式.如果希望动画在活动周期结束时保留其值,则将动画F ...

  5. Vector人工智能机器人SDK使用笔记

    Cozmo是2016年推出的,2两年后的2018年Vector上市,具备语音助手和更多功能,元件数由300+升级到700+. Vector的SDK具体说明在:developer.anki.com/ve ...

  6. Gazebo機器人仿真學習探索筆記(七)连接ROS

    中文稍后补充,先上官方原版教程.ROS Kinetic 搭配 Gazebo 7 附件----官方教程 Tutorial: ROS integration overview As of Gazebo 1 ...

  7. Python 库汇总英文版

    Awesome Python  A curated list of awesome Python frameworks, libraries, software and resources. Insp ...

  8. .Net程序员面试所需要的一些技术准备

    夜已经很深了,但却毫无睡意,最近找工作和面试感触良多,所以想记录下来这段过程. 作为一个.Net程序员,不可否认是比JAVA要难混的.甚至在智联招聘或者大街网都没有.NET程序员的备用选项.真是令人悲 ...

  9. 自动化测试: sikuli,一个基于界面图像的gui测试框架

    http://www.sikuli.org/ license: MIT script language: Python 下面是他的一个hello world的例子,看看也挺有意思的. 开源的世界里有很 ...

  10. Server-Side UI Automation Provider - WinForm Sample

    Server-Side UI Automation Provider - WinForm Sample 2014-09-14 源代码  目录 引用程序集提供程序接口公开服务器端 UI 自动化提供程序从 ...

随机推荐

  1. winform 音乐播放器

    引言 本次项目目的主要为了熟悉axWindowsMediaPlayer,treeview等控件使用,以及学习I/O操作. 技术栈 C# winform 实现效果 设计与实现 使用TreeView实现音 ...

  2. Python一些常见的技巧及语句!!

    题记:关于遇到的一些python代码或者不清楚用法的函数.类别等我会在这里记录下来,方便日后学习和交流.之后研究生三年我会持续更新学习,可能得记录几千个吧. 1. copy.copy()和copy.d ...

  3. 看图认识Javascript

  4. 利用DbgHelp获取线程的栈回溯信息

    当线程发生异常时,我们如果可以记录下来异常线程的堆栈信息,那么对于我们后续问题处理将会有极大的帮助.这里记录一个操作方法. 1 #include <iostream> 2 #include ...

  5. 『玩转Streamlit』--图像与媒体组件

    Streamlit中的图像与媒体组件,主要是st.image.st.audio和st.video. 它们是专为在Streamlit Web应用程序中嵌入和展示多媒体内容而设计的,这些组件不仅丰富了应用 ...

  6. 2022年3月(202203)小米路由R3G(3G)刷openwrt和padavan的总结

    本篇文章是本人这2天刷小米路由R3G的记录,中间可能有很多错误,欢迎留言指出. 1.千万别断电 2.刷机的时候要多等待 小米路由很多型号有着很强的可玩性,128M以上的ROM,256M以上的内存,R3 ...

  7. pytest框架之fixture

    1.在进行接口关联时,一般很多个接口共用一个上行接口(例如)登录,可以使用fixture定义一个测试夹具,将登录的接口写在框架的conftest.py文件中: @pytest.fixture(scop ...

  8. vagrant 中 php 7.2 升级到 php 7.3

    在本地用 vagrant 给 php 7.2 升级到 7.3 的时候,直接修改了 box/config.yml里面 php 版本 然后就 vagrant reload --provision 进行重新 ...

  9. CSS3实现放大镜效果

    市面上基本上所有的购物平台.商城上的商品详情页,对于商品的图片都是有放大功能.那么这个功能主要是怎么实现的呢?CSS3实现放大镜效果主要依赖于CSS的一些高级特性,如transform.transit ...

  10. Memcached笔记——(一)安装&常规错误&监控

    08年的时候接触过Memcached,当时还对它的客户端产品嗤之以鼻,毕竟手工代码没有各种ORM原生XML配置方便.尽管如此,Memcached现在已经成了服务器架构里不可或缺的一部分! 相关链接:  ...