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. RT-Thread Studio刚新建工程后直接打开main.c编译就board.c里产生报错,解决办法

    如题,RT-Thread Studio刚新建工程后直接打开main.c编译就产生报错. 具体为:刚新建了一个stm32F407ZGT6和一个STM32F103RCT6的工程,之后啥代码也没有改,直接打 ...

  2. .NET 各版本贡献者列表

    在微信群里看到有同学对.NET 9的贡献者数量有质疑,.NET 这样的一个全场景的应用开发平台,他的生态是很庞大的,自然一起参与开源贡献的开发者也是很大的,但是很多人都不知道一直有这么一个地址是统计了 ...

  3. .NET斗鱼直播弹幕客户端(上)

    现在直播平台由于弹幕的存在,主播与观众可以更轻松地进行互动,非常受年轻群众的欢迎.斗鱼TV就是一款非常流行的直播平台,弹幕更是非常火爆.看到有不少主播接入弹幕语音播报器.弹幕点歌等模块,这都需要首先连 ...

  4. Python脚本消费多个Kafka topic

    在Python中消费多个Kafka topic,可以使用kafka-python库,这是一个流行的Kafka客户端库.以下是一个详细的代码示例,展示如何创建一个Kafka消费者,并同时消费多个Kafk ...

  5. 面试:10亿数据如何最快速插入MySQL?

    转载:https://mp.weixin.qq.com/s/kL1srP3FZjaTSXLULsUS5g 最快的速度把10亿条数据导入到数据库,首先需要和面试官明确一下,10亿条数据什么形式存在哪里, ...

  6. Mybatis【19】-- Mybatis自关联多对多查询

    注:代码已托管在GitHub上,地址是:https://github.com/Damaer/Mybatis-Learning ,项目是mybatis-15-oneself-many2many,需要自取 ...

  7. uni-app UI效果封装

    1.UI效果 2.操作提示 因为此元素背景色是白色,推荐将页面背景色设置为#f8f8f8 <view class="operation-tip">请扫描设备号</ ...

  8. vue 创建一个项目

    1.npm init -y 2.vue create 名称  3.manuall select features   [手动配置v2,v3] 4.选版本 5 6 启动:npm run serve

  9. DTL事务控制语言--sql事务

    DTL事务控制语言体格sql语句就是一个事务事务可以保证 一组sql语句要么都成功,要么都失败默认自动提交一可以关闭 set autocommit=0关闭自动提交最后 插入或者修改时 只有commit ...

  10. 前端每日一知之让Chrome支持小于12px的文字

    脑图在线链接 本文内容依据[js每日一题]公众号精彩文章总结而来