C# WPF上位机开发(动画效果)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        在软件开发中,有的时候也是需要去处理一些动画效果的。比如,不知道大家有没有印象,每次火箭发射的后半部分,看不到实时画面的时候,就会用动画去进行演示。这个时候,动画的内容也是根据传感器、通讯接收到的数据,去调整对应的显示画面,这样也可以比较方便、直观地去演示当前设备的工作状态。

        当然,不仅仅是航空航天会这么做,工厂里面很多时候也会要求有一些动画效果存在的。比如显示电机有没有开启,排风扇有没有打开,导轨上面的机械臂有没有开始工作等等,这部分也都是需要动画进行实时展示和联动的。

        所以,面对实时仿真和动画演示,一般来说要实现的话,有两种方式。一种是自己用canvas实现,这算是没有其他办法之后不得已的一个选择。另外一种方式,就是查看,当前sdk当中支不支持animation的操作,最好是配置一下属性和参数,就可以直接使用。

1、界面设计

        界面设计部分主要就两个,一个是绘制一个正方形。另外一个就是绘制一个按钮。当按钮按下去的时候,我们希望正方形可以绕着中心点开始运动。

<Window x:Class="WpfApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:sys="clr-namespace:System;assembly=mscorlib"
        xmlns:local="clr-namespace:WpfApp"
        mc:Ignorable="d"
        Title="RotateDemo" Height="480" Width="550">
    <Grid>
        <Canvas>
            <Polygon x:Name="square" Points="0,0 0,100 100,100 100,0" Fill="Blue" Margin="200,100,100,100"/>
        </Canvas>
        <Button Content="Rotate" Click="RotateButton_Click" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="50"/>
    </Grid>
</Window>

        界面不算复杂,它绘制出来的效果是这样的,

2、代码实现

        有了界面绘制之后,下面就开始编写代码了。这中间最主要的,就是Rotate按钮的回调函数实现。当按钮按下去,回调函数被启用,正方向开始旋转。那么在代码中,我们就要设置旋转的中心点、旋转的方向、旋转的速度、旋转的次数等等。

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Media.Animation;

namespace WpfApp
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void RotateButton_Click(object sender, RoutedEventArgs e)
        {
            RotateTransform rotateTransform = new RotateTransform();
            rotateTransform.CenterX = square.ActualWidth / 2;
            rotateTransform.CenterY = square.ActualHeight / 2;

            square.RenderTransform = rotateTransform;

            DoubleAnimation animation = new DoubleAnimation();
            animation.From = 0;
            animation.To = 360;
            animation.Duration = new Duration(TimeSpan.FromSeconds(0.2));
            animation.RepeatBehavior = RepeatBehavior.Forever;

            rotateTransform.BeginAnimation(RotateTransform.AngleProperty, animation);
        }
    }
}

        如上面代码所示,有两个内容需要我们掌握。一个就是结构体RotateTransform,它主要是配置旋转的中心点,也就是说绕着哪个点进行旋转。第二个结构体就是DoubleAnimation,它则是配置旋转的方向、速度和旋转模式。所有这些都准备好之后,直接调用RotateTransform的BeginAnimation函数,正方形就开始旋转了。当然在这之前,需要把rotateTransform绑定到square图形上去。

3、测试和验证

        测试的话,就比较简单,直接编译之后,单击界面中的按钮即可,如果发现蓝色的正方体一直在旋转,那说明一切OK,反之就要去检查一下失败的原因了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/262778.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

iconfont拓展iview图标库

文章目录 前言1.如何下载图标&#xff1f;首先进入官网&#xff0c;找属于自己需求的图标&#xff0c;添加到购物车2.点击右上角的购物车&#xff0c;会来到此页面&#xff0c;点击下载代码3.下载完成后&#xff0c;是一个压缩包&#xff0c;文件内容如下4.在项目assets下新建一…

软件项目安全保证措施

一、 身份鉴别 二、 访问控制 三、 通信完整性、保密性 四、 抗抵赖 五、 数据完整性 六、 数据保密性 七、 应用安全支撑系统设计 软件开发全流程文档支撑下载&#xff1a;软件项目开发全套文档下载-CSDN博客

基于比较的排序算法总结(java实现版)

目录 什么是基于比较的排序算法 什么是排序算法的稳定性 基础排序算法的稳定性 插入排序法 希尔排序法 冒泡排序法 总结 高级算法的稳定性 快速排序法 堆排序法 归并排序法 总结 注意 什么是基于比较的排序算法 基于比较的排序算法定义&#xff1a;之所以能给元素…

ModuleNotFoundError: No module named ‘tensorflow‘

直接运行pip install tensorflow安装成功之后&#xff0c;发现版本是tensorflow2.15.0 python的版本是3.9版本 导入包&#xff1a;import tensorflow 打包xxx.exe,调用之后提示错误 ModuleNotFoundError: No module named tensorflow 最后发现特定的python的版本对应特定的t…

Go语言基础:深入理解结构体

Go语言基础&#xff1a;深入理解结构体 引言&#xff1a;Go语言与结构体的重要性结构体的定义与声明结构体与方法结构体的嵌入与匿名字段结构体的继承与多态性结构体与性能优化结论&#xff1a;结构体在Go中的应用场景 引言&#xff1a;Go语言与结构体的重要性 在当今迅速发展…

java并发编程七 无锁解决加锁问题

文章目录 问题提出解决思路-锁解决思路-无锁 CAS 与 volatile慢动作分析volatile为什么无锁效率高CAS 的特点 问题提出 有如下需求&#xff0c;保证 account.withdraw 取款方法的线程安全 package cn.onenewcode; import java.util.ArrayList; import java.util.List; interf…

JSON Web Token JWT几种简单的绕过方法

JWT结构 JSON Web Token&#xff08;JWT&#xff09;是一个非常轻巧的规范。 这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。 JWT常被用于前后端分离&#xff0c;可以和Restful API配合使用&#xff0c;常用于构建身份认证机制 如图为JWT加密后的示例&…

恶意软件样本行为分析——Process Monitor和Wireshark

1.1 实验名称 恶意软件样本行为分析 1.2 实验目的 1) 熟悉 Process Monitor 的使用 2) 熟悉抓包工具 Wireshark 的使用 3) VMware 的熟悉和使用 4) 灰鸽子木马的行为分析 1.3 实验步骤及内容 第一阶段&#xff1a;熟悉 Process Monitor 的使用 利用 Process …

【高效开发工具系列】eclipse部署web项目

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

类实现接口无法识别接口文件

类实现接口无法识别接口文件 problem 问题 接口文件后缀很奇怪 像个文本文件类文件无法自动识别接口 reason 类文件创建时不正确&#xff0c;需要选择 interface &#xff0c;否则是被当成文本文件 solution 创建时选择 interface

一文详解如何将 ExternalOES转换为 TEXTURE_2D纹理

在使用OpenGL ES进行图形图像开发时&#xff0c;我们常使用GL_TEXTURE_2D纹理类型&#xff0c;它提供了对标准2D图像的处理能力。这种纹理类型适用于大多数场景&#xff0c;可以用于展示静态贴图、渲染2D图形和进行图像处理等操作。 另外&#xff0c;有时我们需要从Camera或外部…

使用docker创建自己的Android编译容器

文章目录 背景步骤1.创建Dockerfile2.编写Dockerfile指令3.编译4.使用 背景 每次拿到新机器或者系统重装&#xff0c;最麻烦的就是各种环境配置&#xff0c;最近学习了一下docker的知识&#xff0c;用dockerfile创建一个Android编译容器&#xff0c;这样就不用每次都吭哧吭哧的…

OpenCV如何以指定分辨率打开摄像头(C++ / Python代码演示)

问题背景 使用OpenCV打开USB摄像头时经常会遇到一个问题:我的摄像头最高分辨率是1920 * 1080,为什么用OpenCV打开摄像头保存的图片每次都是640 *480?能不能以最高分辨率打开并保存图片呢? 如何解决 首先需要确认自己的摄像头支持的最大分辨率是多少,具体步骤可以参考下…

处理HTTP错误和异常在Go语言中的最佳实践

在Go语言中&#xff0c;处理HTTP错误和异常是非常重要的。下面是一些最佳实践&#xff0c;帮助您有效地处理HTTP错误和异常。 定义错误类型 首先&#xff0c;定义一个自定义的错误类型&#xff0c;以便在处理HTTP错误时提供更清晰的错误信息。您可以使用标准库中的error类型作…

【Xcode】解决Unable to process request - PLA Update available

出现场景 IOS更新app时&#xff0c;使用Xcode上传新版本的包时&#xff0c;提示无法上传。 Unable to process request -PLA update available you currently dont have access to this membership resource. To resolve this issue ,agree to the latest program license a…

PHP-Xlswriter高性能导出Excel

使用背景 使用传统的PHPExcel导出效率太慢&#xff0c;并且资源占用高&#xff0c;数据量大的情况&#xff0c;会导致服务占用大量的资源&#xff0c;从而导致生产意味&#xff0c;再三思索后&#xff0c;决定使用其他高效率的导出方式 PHP-Xlswriter PHPExcel 因为内存消耗过…

福建农林大学 html +css + JavaScript 期末复习 -- 保姆级

html css JavaScript 期末复习&#xff08;保姆级复盘&#xff09; 考试题型 1、选择题 20题 30分 2、判断题 15题 15分 3、程序题 3 题 30分 4、综合题 2 题 25分 1、网页第一代文本标签&#xff08;直接上代码&#xff0c;看保姆级注解&#xff09; <!-- doctype: docum…

文件上传——后端

文件上传流程&#xff1a; 创建阿里云OSS&#xff08;对象存储服务&#xff09;的bucket 登录阿里云&#xff0c;并完成实名认证&#xff0c;地址&#xff1a;https://www.aliyun.com/. 可以通过搜索&#xff0c;进入以下页面&#xff1a; 点击立即使用后&#xff1a; 点击…

hex和rgb色值转换-色彩加深减淡

我们在做主题订制的时候&#xff0c;一般都会选一种主题色&#xff0c;该颜色以主题色为主导&#xff0c;颜色依次变浅&#xff0c;用于做主题色下的关联色统一&#xff0c;例如文字激活、激活的背景色、菜单背景色等 在项目中主题色的应用&#xff1a; 如果你在项目中允许用…

create-react-app 打包去掉 map文件

前言&#xff1a; 在使用 create-react-app 创建的React应用中&#xff0c;默认情况下会生成带有.map文件的打包文件&#xff0c;这些.map文件包含了源代码和调试信息&#xff0c;用于开发和调试过程中进行错误跟踪。然而&#xff0c;在生产环境中&#xff0c;这些.map文件通常…
最新文章