WPF特效-实现弧形旋转轮播图

2023-05-16

原文: WPF特效-实现弧形旋转轮播图

       项目遇到,琢磨并实现了循环算法,主要处理循环替换显示问题

      (如:12张图组成一个圆弧,但总共有120张图需要呈现,如何在滑动中进行显示块的替换,并毫无卡顿)

       处理的自己感觉比较满意,记录一下。

      2D效果图:


                                         

    

     2D动态Gif效果:

                                                        


       2D思路: Canvas作为承载控件,控制显示个数,以角度作为判断是否显示的标准。 同时图片以线程池或者延时加载的方式实现加载性能的优化。

       2D循环关键:

        private void UpdateLocation()
        {
            for (int i = 0; i < this.ElementList.Count; i++)
            {
                NavItem oItem = this.ElementList[i];


                if(oItem.Degree - this.CenterDegree >= this.TotalDegree /2d)
                    oItem.Degree -= this.TotalDegree;
                else if(this.CenterDegree - oItem.Degree > this.TotalDegree / 2d)
                    oItem.Degree += this.TotalDegree;


                if (oItem.Degree >= 90d && oItem.Degree < 270d) // Degree 在90-270之间的显示
                    this.SetElementVisiable(oItem);
                else
                    this.SetElementInvisiable(oItem);
            }
        }


      3D效果图:

        


      3D动态Gif效果:

  

                     


      3D思路:以Viewport3D 作为容器,ModelVisual3D 实现元素块的承载,转动效果通过控制Camera的Angle角度实现。 

                      以显示块构成圆弧的角度以及Camera的旋转角度为依据控制元素块是否呈现或隐藏。


      3D循环替换关键

        private void DoUpdateLayout()
        {
            for (int i = 0; i < this.ElementList.Count; i++)
            {
                InteractivePanel3D oVisualItem = this.ElementList[i];
                
                if (oVisualItem.Degree + this.CameraAngleYZm.Angle >= this.TotalDegree / 2d)
                    oVisualItem.Degree -= this.TotalDegree;
                else if (oVisualItem.Degree + this.CameraAngleYZm.Angle <= -this.TotalDegree / 2d)
                    oVisualItem.Degree += this.TotalDegree;


                //元素块角度与3D场景旋转角度的角度差; 角度差在定义的范围内则元素块显示,否则隐藏
                double dDistanceToCenter = Math.Abs(oVisualItem.Degree + this.CameraAngleY.Angle - COriginViewprotAngel);
                if (dDistanceToCenter <= CBoundDegree)
                    this.SetVisualItemVisible(oVisualItem);
                else
                    this.SetVisualItemInvisible(oVisualItem);
            }
        }


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF特效-实现弧形旋转轮播图 的相关文章

  • linux默认有回收站吗,linux下默认删除文件到回收站(bash实现)

    fedora下总是会把文件不小心删除了 xff0c 所以下面的脚本把实现 xff1a 文件删除默认移动到自己的回收站里面 功能 xff1a 脚本实现删除文件或者目录到 waste 自己定义 脚本附带文件名或者目录名 xff0c 则默认代表
  • EXCEL复制死机的问题

    最近发现好几例excel复制死机的现象 xff0c 特总结了一下解决方法 基本上就是下面几种 xff1a 可以供大家参考 1 剪贴板的问题 xff0c 与迅雷等监视剪贴板的软件相关 打开 配置 监视 监视剪贴板 xff0c 取消这个勾选 x
  • Transport endpoint is not connected 报错

    在android中做在线升级程序 xff0c 在http请求数据时 xff0c 出现如下错误 xff1a java net SocketTimeoutException Transport endpoint is not connected
  • Ubuntu下Qt自动退出

    一直在使用Qt xff0c 真的被它强大的功能 漂亮的界面深深吸引了 不过最近遇到了一件非常让人不爽的事情 xff0c 就是在Qt下创建文件的时候会自动 xff0c 而且没有代码提示功能 想想吧 xff0c 这是多么令人头痛 xff0c 没
  • 洛谷 P1233 【木棍加工】题解

    算法 xff1a 排序 xff0c DP xff08 最长上升子序列 xff09 前言 xff1a 此题的数据非常水 xff0c 这里给予一组 hack 数据 xff1a 21 96 25 1 9 39 19 87 51 7 61 11 1
  • C# 修改电脑DNS和IP方法

    lt summary gt 将IP xff0c DNS设置为自动获取 lt summary gt private void setDHCP string doscmd 61 34 netsh interface ip set address
  • 使用Java实现串口通信(二)

    1 写在前面 距离上一篇文章 使用Java实现串口通信 已经过去快两年的时间了 xff0c 在此期间收到了很多读者的反馈 xff0c 很高兴可以帮助到这么多人 xff0c 根据收到的反馈 xff0c 我对代码逻辑进行了优化整理 xff0c
  • MSMG ToolKit v11.2 DL

    友情提醒一下 xff0c 建议使用原版 精简操作系统要是被后门 看不懂英文的可以百度翻译 xff0c 时间久了就明白嘛意思了 无非就那几个单词 如真要使用汉化版 xff0c 优化版的 看好你的核心bin文件夹 MSMG ToolKit By
  • Flutter之使用overlay显示悬浮控件

    Overlay与OverlayEntry Overlay是一个Stack的widget xff0c 可以将overlay entry插入到overlay中 xff0c 使独立的child窗口悬浮于其他widget之上 因为Overlay本身
  • 七夕快到了!表白小程序制作详解,撩翻你的女神!

    大家可能都会在抖音上刷过 xff0c 那种表白小程序 xff0c 但在我看来表白还是亲口说出来比较好 xff0c 这类小程序只适合在平常的一些小节日给对方一个惊喜 话不多说 xff0c 现在进入正题 xff1a 首先 xff0c 要在电脑上
  • Android Studio更改项目SDK的版本

    Elipse 中的安卓项目 xff0c 在Android Studio中可以通过File gt new gt Import Project的方法建立起来 但是有时候需要用到更改项目的API Level xff0c 下面的操作步骤为更改方法
  • java使用POI操作XWPFDocument 生成Word实战(一)【比较详细的】

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 注 xff1a 我使用的word 2016 功能简介 xff1a xff08 1 xff09 使用jsoup解析html得到我用来生成word的文本 xff08 这个你们可
  • HTML加载本地图片

    lt DOCTYPE html gt lt html gt lt body gt lt img src 61 34 file C Users Administrator Desktop 1 jpg 34 gt lt body gt lt h
  • navicat mysql 连接本地 忘记密码 查看密码 操作

    https jingyan baidu com article 454316ab4e9e65f7a7c03ad1 html 转载于 https www cnblogs com yzw23333 p 9510990 html
  • 巧用“记事本” 让病毒白白运行

    电脑中毒后 xff0c 许多朋友会打开 进程管理器 xff0c 将几个不太熟悉的程序关闭掉 xff0c 但有时会碰到这种情况 xff1a 关掉一个 xff0c 再去关闭另外一个时 xff0c 刚才关闭的那个马上又运行了 再从注册表里先把启动
  • mmap如何使用?

    蓝森林 http www lslnet com 2006年4月24日 18 41 对Linux内核内存管理搞了好久了 xff0c 其中对于mmap如何使用 xff0c 有很长一段时间存在疑惑 xff0c 后来在看Linux进程间通信机制的时
  • Sliding Window Maximum

    Given an array nums there is a sliding window of size k which is moving from the very left of the array to the very righ
  • 项目供参考Asp.net C# 获取本周上周本月上月本年上年第一天最后一天时间大全...

    查了好多资料 xff0c 发现还是不全 xff0c 干脆自己整理吧 xff0c 至少保证在我的做法正确的 xff0c 以免误导读者 xff0c 也是给自己做个记录吧 xff01 项目顶用到了 xff0c 所以就写全了 xff0c 供参考使用
  • 彻底关闭 Win10安全中心提示

    del reg Windows Registry Editor Version 5 00 HKEY LOCAL MACHINE SOFTWARE Microsoft Windows CurrentVersion Explorer Shell
  • IdentityServer4之JWT签名(RSA加密证书)及验签

    一 前言 在IdentityServer4中有两种令牌 xff0c 一个是JWT和Reference Token xff0c 在IDS4中默认用的是JWT xff0c 那么这两者有什么区别呢 xff1f 二 JWT与Reference To

随机推荐

  • Sublime激活码

    BEGIN LICENSE riku Single User License EA7E 806996 60C55C64D0195F15A118D93ECE0849B3 30C432F529F7BFAAF6568C6BFDDA1868 D6D
  • HTML5 入门:一个最简单的HTML页面(doctype、meta、Head、标签的使用)

    HTML5的 lt doctype gt 声明怎么写 这是HTML 4 01的doctype xff1a lt DOCTYPE html PUBLIC 34 W3C DTD HTML 4 01 EN 34 34 http www w3 or
  • 终止阻塞的线程

    为什么80 的码农都做不了架构师 xff1f gt gt gt 线程状态 我们知道 xff0c 一个线程可以处于以下四种状态之一 xff1a 1 新建 xff08 New xff09 xff1a 当线程被创建时 xff0c 它只会短暂地处于
  • 【spring data jpa】jpa中使用count计数方法

    spring data jpa中使用count计数方法很简单 直接在dao层写方法即可 int countByUidAndTenementId String parentUid String tenementId 这样即可根据传入的字段查询
  • Intellij 高亮显示与选中字符串相同的内容

    如下图所示 xff0c 我的是 2018 xff0c 不同版本 xff0c Schema 可能要 Save As一下
  • Docker练习例子:基于 VNCServer + noVNC 构建 Docker 桌面系统

    0 安装docker 这一步略 xff0c 网上有好多教程 xff0c 一般出现装不上的原因 xff0c 也就是网速问题了 xff0c 这个我也很难帮你 1 下载指定的镜像images 1 docker pull dorowu ubuntu
  • 服务器开发通信协议设计介绍

    一 选择TCP还是UDP协议 由于我们的即时通讯软件的用户存在用户状态问题 xff0c 即用户登录成功以后可以在他的好友列表中看到哪些好友在线 xff0c 所以客户端和服务器需要保持长连接状态 另外即时通讯软件一般要求信息准确 有序 完整地
  • 神经网络NN算法(理论篇)

    起步 神经网络算法 Neural Network 是机器学习中非常非常重要的算法 这是整个深度学习的核心算法 xff0c 深度学习就是根据神经网络算法进行的一个延伸 理解这个算法的是怎么工作也能为后续的学习打下一个很好的基础 背景 神经网络
  • TiDB 的数据迁移工具现已开源

    TiDB 是国内 PingCAP 团队开发的一个分布式 SQL 数据库 xff0c 支持包括传统 RDBMS 和 NoSQL 的特性 现已将 DM xff08 data migration platform xff0c 该数据迁移工具 xf
  • MSMG ToolKit v11.4 DL

    v11 4 43 Updated the Microsoft Windows PowerShell 7 Pack Windows 7 Windows 8 1 Windows 10 for MSMG ToolKit with PowerShe
  • iOS YYText的使用笔记一(YYTextView图文编辑器)

    YYText是强大的YYKit的一部分可以单独下载 Github地址 https github com ibireme YYText Powerful text framework for iOS to display and edit r
  • sass入门指南

    很详细的sass入门指南 xff0c 学习一下 原文sass入门指南 css预处理器已经算不上一个新鲜的词了 xff0c 当前比较有代表性的css预处理器有sass less stylus 关于三者选择问题一直都是比较受争议的话题 xff0
  • redisTemplate.expire 无效和更新含有生存时间的key

    为什么80 的码农都做不了架构师 xff1f gt gt gt spring中redis 配置的不对 如下配置 xff1a lt redis配置 gt lt bean id 61 34 poolConfig 34 class 61 34 r
  • 测试linux下磁盘的读写速率

    1 xff09 通过df h命令查看磁盘情况 Filesystem Size Used Avail Use Mounted on dev sda4 289G 61G 214G 23 tmpfs 7 8G 0 7 8G 0 dev shm d
  • idea右侧的工具栏不见,包括maven以及其他

    通用 xff0c 设置后右侧工具栏可见 可以通过view gt windows tool看到maven的 转载于 https www cnblogs com czz hl p 9963643 html
  • 一些个人喜欢的博客

    詹兴斌 xff1a http blog zhanxb com category 19 代震 军 xff1a http daizhj cnblogs com 老赵 http blog zhaojie me 张善友 xff1a http www
  • 修改注册表权限

    1 uses aclapi AccCtrl 2 3 var 4 lpObjectName LPTSTR 5 OldDACL NewDACL PACL uses aclapi 6 ObjectType SE OBJECT TYPE uses
  • android socket编程之UDP

    socket是基于tcp和upd的 xff0c 而tcp和udp是基于ip协议 xff0c 客户端 xff1a package com sunfb upd import java io IOException import java net
  • zabbix监控网络的出入口流量

    首先我们登录到zabbix 点击配置 模板 Template OS Linux 下的监控项 点击右上角的添加监控项目 我们的服务器是在Ucloud上的 xff0c 我们的网卡名称为eth0 xff0c 然后配置如下 zabbix自带的监控网
  • WPF特效-实现弧形旋转轮播图

    原文 WPF特效 实现弧形旋转轮播图 项目遇到 xff0c 琢磨并实现了循环算法 xff0c 主要处理循环替换显示问题 xff08 如 xff1a 12张图组成一个圆弧 xff0c 但总共有120张图需要呈现 xff0c 如何在滑动中进行显