c#翻页效果

2023-10-31

用c#和GDI+实现杂志翻页动画效果时间:2010-01-13 blog.csdn.net 周公 -
说明:以前本人参与个一个电子杂志项目,当时要求实现模拟现实生活中的杂志翻页动画效果,别人推荐了这篇文章,最后达到了我想要的效果,今天尝试把这篇文章翻译了一下。希望对英语水平不太好的同行有帮助。如果你的英语水平足够好,我推荐你阅读英文原文,网址是:http://www.codeproject.com/KB/GDI-plus/TurnThePage.aspx,同时希望大家原谅本人的翻译水平。
 
介绍
 
 
图1 翻页效果
 
这篇文章用来介绍如何在电子书或者电子相册中并列显示图片时创建一种翻页效果,这种翻页效果模仿了现实中的书本翻页情况。
 
背景
 
写作这篇文章的灵感来自于一个可重用的用于显示图片的组件的需求。我使用了C#和GDI+来提高我对.net下图形图象编程的理解。
 
创建这种效果的技术背景来自于一篇文章《FalshMX中的翻页效果》,网址是:http://www.oreillynet.com/pub/a/javascript/2004/09/03/flashhacks.html,作者是Sham Bhangal。Sham在文章里如何在动画效果中使用对称线来控制页面的可见部分。尽管在Flash MX中和在GDI+中的处理有些不同,但是利用对称线来计算页面的可见部分这个概念是相同的。
 
在这篇文章中,我们假定第3页和第4页是当前页,并且下一个动作是要翻到第5页和第6页。换句话说,我们要展现的是第4页的翻页效果。
 
动画技巧
 
下图阐述了在整个动画中的关键区域和变化区域。
 
 
图2 关键区域和参数
 
 
本文来自编程入门网:http://www.bianceng.cn/Programming/csharp/201001/14287.htm
整个翻页动画可以概括为:
 
1、完全绘制出第3页和第4页。在绘制完成之后,B和C部分将会遮挡住第4页的原来可见部分。
 
2、计算出对称线和B和C的裁剪区域。
 
3、绘制B部分。这是下面的一页的部分区域(第6页)。
 
4、根据热点进行相应转换,并且进行相应旋转。
 
5、绘制C部分。这是第4页在翻页过程中显示的它的背面(第5页)的内容。
 
当前页
 
《FalshMX中的翻页效果》一文中指出当前页并不参与翻页效果。这就意味着在翻页中的每一面(第3页和第4页)都会首先被不进行任何裁减和转换就绘制出来。B和C这两个可见部分将会在当前页之上进行绘制。
 
热点
 
“热点”这个词是我从《FalshMX中的翻页效果》一文中借鉴过来的。热点一词代表在翻页时折痕在水平轴线上的位置,它标明对称线的起始位置。在翻页过程中,热点一直在从页边缘到书中间这段距离之间移动。从页边到热点的这段距离(x)将随着页面的翻动而变化。当热点到达书的中间位置时,动画就停止了,这时x=PAGE_WIDTH。
 
对称线
 
对称线代表翻页时页面的折痕。它是用于计算在翻页时参与的页面可见部分。在程序中,对称线控制两件事情:
 
1、B和C部分的裁剪区域。
 
 
本文来自编程入门网:http:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c#翻页效果 的相关文章

随机推荐

  • 全球排名前500的网站都是做什么的

    数据来自Alexa权威2016 3 3 Google com Enables users to search the world s information including webpages images and videos Offe
  • HttpClient的基本使用

    HttpClient4 510 API参考 点我进入 HTTP 协议可能是现在 Internet 上使用得最多 最重要的协议了 越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源 虽然在 JDK 的 java net包
  • 【DirectX11学习02】绘制单个基本几何体的线框

    注 下面涉及的代码都基于这篇文章的内容 https blog csdn net Kurozaki Kun article details 86709050 绘制过程 要在DX上绘制一个基本图形 大体流程有以下几步 给出输入布局 主要是描述顶
  • 对象池(连接池):commons-pool2源码解析:GenericObjectPool的returnObject方法解析

    为什么会有对象池 在实际的应用工程当中 存在一些被频繁使用的 创建或者销毁比较耗时 持有的资源也比较昂贵的一些对象 比如 数据库连接对象 线程对象 所以如果能够通过一种方式 把这类对象统一管理 让这类对象可以被循环利用的话 就可以减少很多系
  • windows安装docker desktop

    windows安装docker desktop 前言 一 docker desktop 是什么 二 安装步骤 1 下载 2 安装 总结 前言 这里针对windows 10 家庭中文版 其他版本部分步骤可跳过 一 docker desktop
  • ChatGPT写作提示词指令大全

    1 用ChatGPT写影评 指令 你是一个自媒体人 同时也是一个专业的影评人 最近熬夜看完了韩剧黑暗荣耀第一季和第二季 忍不住想在公众号分享给粉丝们 请写一篇1000字左右的自媒体文章 并且加上一个有吸引力的标题 指令模板 你是一个自媒体人
  • 使用腾讯云 GPU 学习深度学习系列

    https cloud tencent com developer article 1005199
  • 模拟电路设计(17)---典型RC正弦波振荡器

    RC正弦波振荡器 采用LC器件作为振荡电路的反馈网络可以达到很高的输出频率 器件比较容易实现小体积 但是要求振荡器输出几十或者几百Hz信号时 LC器件的取值会很大 很难实现实用的产品 此时采用RC选频网络就会有很大的优势 RC LC反馈振荡
  • C#:Xxxx.GetTypes()引发了类型“System.Reflection.ReflectionTypeLoadException”的异常

    参考 Xxxx GetTypes 引发了类型 System Reflection ReflectionTypeLoadException 的异常 Nemo的笔记本 CSDN博客
  • 用户界面与业务逻辑的分离

    前面分别实现了计算器程序的用户界面和业务逻辑 基本程序架构一般包含 用户界面模块 UI 接受用户输入及呈现数据 业务逻辑模块 Business Logic 根据用户需求处理数据 基本设计原则 功能模块之间需要进行解耦 核心思想 强内聚 弱耦
  • 以太坊开发框架——Truffle的基础使用

    这里写目录标题 Truffle Truffle 简介 Truffle 的客户端 安装Truffle 创建项目 Migration artifacts require exports 的函数 deployer 对象 更新 migration
  • TCP三次握手

    TCP三次握手的原因 双方都确认对方具有接收和发送数据的功能 1 初始状态 双方都处于Closed状态 2 服务器开启监听功能 处于Listen状态 3 第一次握手 客户端发起请求 发送一个SYN标识 连接请求数据包 seq x 并处于SY
  • vue 树形结构数据的便捷遍历,及树形结构与平级列表的相互转换(使用xe-utils函数)

    一 使用xe utils函数 xe utils 的api地址 xe utils 函数库 工具类 二 安装 npm安装 npm install xe utils 引用 import XEUtils from xe utils 1 mapTre
  • 数据结构(使用静态数组实现顺序表)

    一 定义 1 线性表 1 线性表的定义 逻辑结构 具有相同数据类型的n n gt 0 的有限个数的数据元素的有序排列 2 线性表的运算 操作 创建销毁 增删改查 3 线性表的存储结构 顺序存储 产生了顺序表 链式存储 产生了链表 2 顺序表
  • 华为云服务器怎么传文件,在云服务器终端里面怎么传文件

    在云服务器终端里面怎么传文件 内容精选 换一换 已获取该弹性云服务器的密钥文件 弹性云服务器已经绑定弹性IP地址 已配置安全组入方向的访问规则 如果您是在Windows操作系统上登录Linux 可以按照下面方式登录弹性云服务器 我们以PuT
  • 数据结构——单调栈

    单调栈 定义 单调递增栈 单调递增栈就是从栈底到栈顶数据是从小到大 单调递减栈 单调递减栈就是从栈底到栈顶数据是从大到小 实现 以单调递增栈为例 向栈中推入元素时 如果栈顶元素比当前元素大 则将栈顶元素推出 直到栈顶元素比当前元素小或者栈为
  • IDEA新建项目时,没有Spring Initializr选项(亲测有效)

    最近开始使用IDEA作为开发工具 然后也是打算开始学习使用spring boot 看着博客来进行操作上手spring boot 很多都是说 创建一个新项目 Create New Project 选择 Spring Initializr 然而
  • 全网最全jupyter安装与使用教程

    jupyter的安装与使用 注 我主要使用的是windows系统 其余的也不太了解 不过这篇文章可以解决大部分问题 部分图片过大 建议打开网址 简介 Jupyter Notebook是基于网页的用于交互计算的应用程序 简而言之 Jupyte
  • c++输出字符数组出现汉字乱码(包含用for循环输入字符数组再输出数组,出现汉字乱码)

    原因在于字符数组里存放内容没有字符结束标志 0 例子1 没有 0 include
  • c#翻页效果

    用c 和GDI 实现杂志翻页动画效果时间 2010 01 13 blog csdn net 周公 说明 以前本人参与个一个电子杂志项目 当时要求实现模拟现实生活中的杂志翻页动画效果 别人推荐了这篇文章 最后达到了我想要的效果 今天尝试把这篇