WPF过渡面板

 WPF开发者QQ群: 340500857  | 微信群 -> 进入公众号主页 加入组织

欢迎转发、分享、点赞、在看,谢谢~。eef35eaad231ac26e686a89e5b28114f.png  

前言

      效果投稿来源于-郑竣僖 QQ:411309583

01

效果预览

效果预览(更多效果请下载源码体验):


一、TransitionPanelExample.xaml

<UserControl x:Class="WPFDevelopers.Samples.ExampleViews.TransitionPanelExample"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:WPFDevelopers.Samples.ExampleViews"mc:Ignorable="d" x:Name="_user"d:DesignHeight="450" d:DesignWidth="800"><StackPanel>        <Canvas ClipToBounds="True" x:Name="PART_Canvas"            VerticalAlignment="Top">            <Canvas.Background>                <ImageBrush ImageSource="pack://application:,,,/WPFDevelopers.Samples;component/Images/Craouse/0.jpg"/>            </Canvas.Background>        </Canvas>        <Button x:Name="btnContent" Content="下一步" Click="Button_Click" Style="{StaticResource PrimaryButton}" Width="80"/>    </StackPanel>    
</UserControl>

二、TransitionPanelExample.xaml.cs 代码如下

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;namespace WPFDevelopers.Samples.ExampleViews
{/// <summary>/// TransitionPanelExample.xaml 的交互逻辑/// </summary>public partial class TransitionPanelExample : UserControl{double rWidth = 0.0;public TransitionPanelExample(){InitializeComponent();Loaded += TransitionPanelExample_Loaded;}private void TransitionPanelExample_Loaded(object sender, RoutedEventArgs e){rWidth = this.ActualWidth / 8;Height = this.ActualWidth;var leftX = 0.0;PART_Canvas.Height = ActualHeight * 0.8;var color = (Color)ColorConverter.ConvertFromString("#FF5858F1");for (int i = 0; i < 10; i++){var name = $"PART_Rectangle_{i}";var rect = new Rectangle{Width = rWidth,Height = ActualHeight,Fill = new SolidColorBrush(color),RenderTransformOrigin = new Point(0.5, 0.5),Name = name};rect.RenderTransform = new SkewTransform{AngleX = -25};PART_Canvas.Children.Add(rect);if (!leftX.Equals(0.0))leftX = leftX + rWidth - 1;elseleftX = -rWidth - 4;Canvas.SetLeft(rect, leftX);}}private void Button_Click(object sender, RoutedEventArgs e){var doubleAnimation = new DoubleAnimation{To = 0,EasingFunction = new CircleEase { EasingMode = EasingMode.EaseIn }};if (btnContent.Content.ToString().Equals("下一步")){foreach (Rectangle item in PART_Canvas.Children){var names = item.Name.Split('_');DoubleAnimationDuration(doubleAnimation,names);doubleAnimation.Completed += (s, n) =>{btnContent.Content = "上一步";};item.BeginAnimation(Rectangle.WidthProperty, doubleAnimation);}}else{doubleAnimation.To = rWidth;doubleAnimation.EasingFunction = new CircleEase { EasingMode = EasingMode.EaseOut };foreach (Rectangle item in PART_Canvas.Children){var names = item.Name.Split('_');DoubleAnimationDuration(doubleAnimation, names);doubleAnimation.Completed += (s, n) =>{btnContent.Content = "下一步";};item.BeginAnimation(Rectangle.WidthProperty, doubleAnimation);}}}void DoubleAnimationDuration(DoubleAnimation doubleAnimation,string[] names){if (names[2].Equals("7") || names[2].Equals("2")){doubleAnimation.Duration = TimeSpan.FromMilliseconds(200);}else if (names[2].Equals("0") || names[2].Equals("6")){doubleAnimation.Duration = TimeSpan.FromMilliseconds(250);}else if (names[2].Equals("4") || names[2].Equals("9")){doubleAnimation.Duration = TimeSpan.FromMilliseconds(300);}else if (names[2].Equals("1") || names[2].Equals("5")){doubleAnimation.Duration = TimeSpan.FromMilliseconds(400);}elsedoubleAnimation.Duration = TimeSpan.FromMilliseconds(500);}}
}

源码地址

github:https://github.com/yanjinhuagood/WPFDevelopers.git

gitee:https://gitee.com/yanjinhua/WPFDevelopers.git

WPF开发者QQ群: 340500857 

blogs: https://www.cnblogs.com/yanjinhua

Github:https://github.com/yanjinhuagood

出处:https://www.cnblogs.com/yanjinhua

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

转载请著名作者 出处 https://github.com/yanjinhuagood

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UScript中的Pow函数

这些天越来越发现数学的重要和妙趣了&#xff0c; 由于一些地方需要使用指数次幂来实现更好的效果&#xff0c; 想当然地去找pow函数&#xff0c;把Object和Actor翻了个底朝天 。。。 结果可想而知&#xff0c; 也正好&#xff0c;尝试了一把UScript和C的混编&#xff0c;但搜一…

PM与工程师

原文链接&#xff1a;http://firecacada.blog.163.com/blog/static/70743762011117114451722/ 过节前看到一篇文章&#xff0c;讲产品项目就应该由工程师来主导&#xff0c;但国内让PM去驱动项目&#xff0c;搞得乱七八糟&#xff0c;很恼火&#xff0c;怎么可能做出一款好产品…

哪些才是对女朋友的有效关心,来学习一下~

1 这本书真好&#xff0c;在哪里才能买得到呢&#xff1f;2 求求你&#xff0c;不要抢我的小毛虫&#xff01;3 所有的乘客请系好安全带4 小朋友非常可爱了5 字幕组真的尽力了&#xff01;6 学习了7 10月16日&#xff0c;平安南京 根据真实接警经历&#xff0c;发布一则警示案例…

fabric 转账_Fabric 学习笔记-架构初探

本文介绍了Fabric的架构&#xff0c;以及通过一个简单的Demo来熟悉整个交易流程。Hyperledger fabric V1.0的架构如下图所示&#xff1a;application提供各种语言的SDK接口。membership也就是fabric-ca提供成员服务&#xff0c;用来管理身份&#xff0c;提供授权和认证。peer负…

多个goruntine 性能变慢_提高 JavaScript 性能的 12 个技巧

作者丨Liz Parody在创建 Web 应用程序时应始终考虑性能。为了帮助你开始&#xff0c;本文列举了有效提高应用程序性能的 12 种方法。性能是创建网页或应用程序时最重要的一个方面。没有人想要应用程序崩溃或者网页无法加载&#xff0c;或者用户的等待时间很长。根据 Kissmetric…

#celery#周期性任务

2019独角兽企业重金招聘Python工程师标准>>> 玩了一个星期的clannad&#xff0c;是时候干点事了。 折腾了下celery周期性任务&#xff1a; celery提供了一个叫celery beat的服务&#xff0c;用于定时驱使worker执行任务。也就是说&#xff0c;如果本地没有活动的wor…

WTMPlus 1.1 发布

点击上方蓝字关注我们1.1版本WTMPlus上线一个多月以来&#xff0c;得到了越来越多用户的喜爱。虽然1.0版本还有不少问题&#xff0c;但是它的核心理念和功能受到了用户的认可。1.1版本修复了大量用户反馈的易用性的问题和系统Bug&#xff0c;并且加入了强悍的图表工具。图表编辑…

backgroundworder 简单使用

//手动创建backgroundworker组件///创建 private backgroundworker bgd new backgroundworker(); ///声明xmldoment private xmldoment doment null; /// Load 加载事件 private void Form1_Load(object sender , EventArgs e) { /// 执行操作 this.bgd.DoWorker delegate(ob…

4部“教材级”纪录片,有生之年必看系列!

全世界只有3.14 % 的人关注了爆炸吧知识纪录片是以真实生活为创作素材&#xff0c;以真人真事为表现对象&#xff0c;并对其进行艺术的加工与展现的&#xff0c;以展现真实为本质&#xff0c;并用真实引发人们思考的电影或电视艺术形式。好的纪录片就像打开了一扇新世界的大门&…

mysql数据恢复时显示多线程恢复_MySQL多线程备份恢复工具mydumper,myloder

mydumper备份时&#xff0c;数据和表结构是分开的&#xff0c;比如备份test表时&#xff0c;会生成test.sql文件和test.schema.sql文件。myloader导数据的时候默认不会记录二进制日志&#xff0c;即使你的sql_log_binon.准备安装介质&#xff1a;下载mydumper-0.6.2.tar.gz下载…

IM实现联系人及联系人分组的数据库设计

openfire中通过ofgroup/ofgroupprop/ofgroupuser实现组织结构中的分组&#xff0c;通过ofroster/ofrostergroups实现好友关系中的分组。但是呢&#xff0c;我们做二次开发的时候&#xff0c;希望能够有自己的个人联系人及分组&#xff0c;它没有确认过程&#xff0c;也就是说&a…

python生成器yield原理_Python generator生成器和yield表达式详解

前言Python生成器(generator)并不是一个晦涩难懂的概念。相比于MetaClass和Closure等概念&#xff0c;其较为容易理解和掌握。但相对于程序结构&#xff1a;顺序、循环和分支而言其又不是特别的直观。无论学习任何的东西&#xff0c;概念都是非常重要的。正确树立并掌握一些基础…

Java 操作POI 之复制sheet页

2019独角兽企业重金招聘Python工程师标准>>> 来点干货直接上代码&#xff0c;就不细说了 package com.qs.web.tools.core.excel; import java.util.HashMap; import java.util.Map; import java.util.Set; import java.util.TreeSet; import org.apache.poi.hssf.us…

Serverless 落地实践

.Net Core Serverless初体验什么是ServerlessServerless 是一个当今软件世界中比较新的话题。它并没有一个普遍公认的权威定义&#xff0c;每个人每个企业对它的解释可能都有不同&#xff0c;而 Serverless 正是在这种情况下不断发发展的。但是就算如此&#xff0c;有一些 Serv…

KOFLive Beta Daily-Scrum 9

组 员今天的工作进 度问 题明天的计划田 飞Work Item 38911&#xff1a;角色四照片拍摄 Work Item 38897:键盘输入人物四的图片已经导入&#xff0c;键盘三个连键检测完成还剩最后一个连键的检测Work Item 38911:拍摄人物角色五付 浩Work Item 37741:游戏主模块 Work Item 3889…

出这样的题,出题人的良心确定不会痛吗?

全世界只有3.14 % 的人关注了爆炸吧知识“那些年&#xff0c;让我们气到吐血的题目。”数学篇

mysql怎么查看索引情况_mysql 查看索引使用情况

mysql 查看索引使用情况这是以读为主的线上库rootread 02:28:07>show status like ‘Handler_read%’;———————–——-| Variable_name | Value |———————–——-| Handler_read_first | 0 || Handler_read_key | 0 || Handler_read_ne…

iTextSharp应用,生成pdf

using iTextSharp.text; using iTextSharp.text.pdf; using System.IO; public void PDF(string html) { Document dom new Document(); //创建文档 PdfWriter.GetInstance(dom, new FileStream(Server.MapPath("test") Guid.NewGuid() "…

python垃圾回收机制为什么标记能解决循环引用问题_Python 垃圾回收机制和如何解决循环引用...

引用计数&#xff1a;是一种垃圾收集机制&#xff0c;而且也是一种最直观&#xff0c;最简单的垃圾收集技术, 当一个对象的引用被创建或者复制时&#xff0c;对象的引用计数加 1&#xff1b;当一个对象的引用被销毁时&#xff0c;对象的引用计数减 1&#xff1b;当对象的引用计…

Dapr + .NET 实战(十-终篇)K8S运行Dapr

工作原理为了实现在k8s上安装Dapr&#xff0c;Dapr需要部署dapr-sidecar-injector、dapr-operator、dapr-placement和dapr-sentry服务。 dapr-operator: 管理组件(state stores, pub/subs, etc.)dapr-sidecar-injector: 将 Dapr 注入 annotated pods&#xff0c;并添加环境变量…