WPF案例 (三) 模拟QQ“快速换装"界面

简介: 原文:WPF案例 (三) 模拟QQ“快速换装"界面   这个小程序使用Wpf模拟QQ快速换装页面的动画特效,通过使用组合快捷键Ctrl+Left或Ctrl+Right,可实现Image平滑的向左或者向右滑动,页面如下,有兴趣的朋友可以下载源码         在构建这个示例的3D场景时,使用...
原文: WPF案例 (三) 模拟QQ“快速换装"界面

   这个小程序使用Wpf模拟QQ快速换装页面的动画特效,通过使用组合快捷键Ctrl+Left或Ctrl+Right,可实现Image平滑的向左或者向右滑动,页面如下,有兴趣的朋友可以下载源码

    

   在构建这个示例的3D场景时,使用了ModelVisual3D和Model3DGroup元素,ModelVisual3D是一个3D容器类,用来包含3D元素,在这里使用Model3DGroup打包了3个GeometryModel3D,每个GeometryModel3D的Materia各填充了一幅Image,将设置为的,使用RotateTransform3D和TranslateTransform3D对Model3DGroup集合中的每个GeometryModel3D应用模型变换,最终出现图示的效果

img_405b18b4b6584ae338e0f6ecaf736533.gif 3D场景
 1           < Viewport3D  x:Name ="viewPort3D"  RenderOptions.EdgeMode ="Aliased"  ClipToBounds ="False" >
 2               < Viewport3D.Camera >
 3                   < PerspectiveCamera  Position ="0,0,8"    />
 4               </ Viewport3D.Camera >
 5               < ModelVisual3D >
 6                   < ModelVisual3D.Content >
 7                       < AmbientLight  Color ="White" />
 8                   </ ModelVisual3D.Content >
 9               </ ModelVisual3D >
10               < ModelVisual3D  >
11                   < ModelVisual3D.Content >
12                       < Model3DGroup  x:Name ="model3DGroup" >
13                           < Model3DGroup.Children >
14                               < GeometryModel3D  x:Name ="center"  Geometry =" {StaticResource Geometry} "   >
15                                   < GeometryModel3D.Transform >
16                                       < Transform3DGroup >
17                                           < RotateTransform3D >
18                                               < RotateTransform3D.Rotation >
19                                                   < AxisAngleRotation3D  Axis ="0,1,0"  Angle ="0" />
20                                               </ RotateTransform3D.Rotation >
21                                           </ RotateTransform3D >
22                                           < TranslateTransform3D  OffsetX ="0"  OffsetY ="0"  OffsetZ ="0.5"   />
23                                       </ Transform3DGroup >
24                                   </ GeometryModel3D.Transform >
25                                   < GeometryModel3D.Material >
26                                       < DiffuseMaterial >
27                                           < DiffuseMaterial.Brush >
28                                              < ImageBrush  ImageSource ="Images\051123Webshots05.jpg" />
30                                           </ DiffuseMaterial.Brush >
31                                       </ DiffuseMaterial >
32                                   </ GeometryModel3D.Material >
33                               </ GeometryModel3D >
34                               < GeometryModel3D  x:Name ="right"  Geometry =" {StaticResource Geometry} "    >
35                                   < GeometryModel3D.Transform >
36                                       < Transform3DGroup >
37                                           < RotateTransform3D >
38                                               < RotateTransform3D.Rotation >
39                                                   < AxisAngleRotation3D  Axis ="0,1,0"  Angle ="-45" />
40                                               </ RotateTransform3D.Rotation >
41                                           </ RotateTransform3D >
42                                           < TranslateTransform3D  OffsetX ="1.8"  OffsetY ="0"  OffsetZ ="-2.5"   />
43                                       </ Transform3DGroup >
44                                   </ GeometryModel3D.Transform >
45                                   < GeometryModel3D.Material >
46                                       < DiffuseMaterial >
47                                           < DiffuseMaterial.Brush >
48                                               < ImageBrush  ImageSource ="Images\051027nature02.jpg" />
49                                           </ DiffuseMaterial.Brush >
50                                       </ DiffuseMaterial >
51                                   </ GeometryModel3D.Material >
52                               </ GeometryModel3D >
53                               < GeometryModel3D  x:Name ="left"  Geometry =" {StaticResource Geometry} "   >
54                                   < GeometryModel3D.Transform >
55                                       < Transform3DGroup >
56                                           < RotateTransform3D >
57                                               < RotateTransform3D.Rotation >
58                                                   < AxisAngleRotation3D  Axis ="0,1,0"  Angle ="45" />
59                                               </ RotateTransform3D.Rotation >
60                                           </ RotateTransform3D >
61                                           < TranslateTransform3D  OffsetX ="-1.8"  OffsetY ="0"  OffsetZ ="-2.5"   />
62                                       </ Transform3DGroup >
63                                   </ GeometryModel3D.Transform >
64                                   < GeometryModel3D.Material >
65                                       < DiffuseMaterial >
66                                           < DiffuseMaterial.Brush >
67                                              < ImageBrush  ImageSource ="Images\051027nature01.jpg" />
68                                           </ DiffuseMaterial.Brush >
69                                       </ DiffuseMaterial >
70                                   </ GeometryModel3D.Material >
71                               </ GeometryModel3D >
72                           </ Model3DGroup.Children >
73                       </ Model3DGroup >
74                   </ ModelVisual3D.Content >
75               </ ModelVisual3D >
76           </ Viewport3D >

    对3D场景使用动画其实就是对3D场景中的基本基元的依赖项属性使用动画,这些依赖项属性中最常用的就是跟3D模型变换相关的三个元素TranslateTransform3D、 和 最后定义快捷键,按下组合键Ctrl+Left或者Ctrl+Right,界面中的Image将平滑的向左或者向右切换

img_405b18b4b6584ae338e0f6ecaf736533.gif 定义快捷键
private   void  Window_KeyDown( object  sender, KeyEventArgs e)
  {
     
if  (e.KeyStates  ==  Keyboard.GetKeyStates(Key.Left)  &&  Keyboard.Modifiers  ==  ModifierKeys.Control)
         {
           
// 向左滑动图片
             this .MoveCurrentToPrevious();
         }
     
else   if  (e.KeyStates  ==  Keyboard.GetKeyStates(Key.Right)  &&  Keyboard.Modifiers  ==  ModifierKeys.Control)
        {
           
// 向右滑动图片
             this .MoveCurrentToNext();
        }
 }
目录
相关文章
|
11月前
|
开发框架 前端开发 JavaScript
循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(12) -- 使用代码生成工具Database2Sharp生成WPF界面代码
循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(12) -- 使用代码生成工具Database2Sharp生成WPF界面代码
循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(12) -- 使用代码生成工具Database2Sharp生成WPF界面代码
|
10月前
|
编解码 C# 数据库
C# + WPF 音频播放器 界面优雅,体验良好
【9月更文挑战第18天】这是一个用 C# 和 WPF 实现的音频播放器示例,界面简洁美观,功能丰富。设计包括播放/暂停按钮、进度条、音量控制滑块、歌曲列表和专辑封面显示。功能实现涵盖音频播放、进度条控制、音量调节及歌曲列表管理。通过响应式设计、动画效果、快捷键支持和错误处理,提升用户体验。可根据需求扩展更多功能。
293 3
|
11月前
|
C# UED 开发者
WPF动画大揭秘:掌握动画技巧,让你的界面动起来,告别枯燥与乏味!
【8月更文挑战第31天】在WPF应用开发中,动画能显著提升用户体验,使其更加生动有趣。本文将介绍WPF动画的基础知识和实现方法,包括平移、缩放、旋转等常见类型,并通过示例代码展示如何使用`DoubleAnimation`创建平移动画。此外,还将介绍动画触发器的使用,帮助开发者更好地控制动画效果,提升应用的吸引力。
515 0
|
11月前
|
容器 C# 开发者
XAML语言大揭秘:WPF标记的魅力所在,让你轻松实现界面与逻辑分离,告别复杂代码!
【8月更文挑战第31天】XAML提供了一种直观且易于维护的界面设计方式,使得开发者可以专注于逻辑和业务代码的编写,而无需关心界面细节。通过数据绑定、布局管理和动画效果等特性,XAML可以实现丰富的界面交互和视觉效果。在实际开发过程中,开发者应根据具体需求选择合适的技术方案,以确保应用程序能够满足用户的需求。希望本文的内容能够帮助您在WPF应用程序开发中更好地利用XAML语言。
114 0
|
11月前
|
数据处理 开发者 C#
WPF数据绑定实战:从零开始,带你玩转数据与界面同步,让你的应用程序更上一层楼!
【8月更文挑战第31天】在WPF应用开发中,数据绑定是核心技能之一,它能实现界面元素与数据源的同步更新。本文详细介绍了WPF数据绑定的概念与实现方法,包括属性绑定、元素绑定及路径绑定等技术,并通过示例代码展示了如何创建数据绑定。通过数据绑定,开发者不仅能简化代码、提高可维护性,还能提升用户体验。无论初学者还是有经验的开发者,都能从中受益,更好地掌握WPF数据绑定技巧。
208 0
|
11月前
|
存储 前端开发 C#
WPF/C#:更改界面的样式
WPF/C#:更改界面的样式
127 0
|
前端开发 算法 JavaScript
走进WPF之MVVM完整案例
走进WPF之MVVM完整案例
421 0
WPF界面无法正常显示(资源引用,如转换器),但程序正常运行
WPF界面无法正常显示(资源引用,如转换器),但程序正常运行
WPF界面无法正常显示(资源引用,如转换器),但程序正常运行
|
C# Windows
一个WPF开发的、界面简洁漂亮的音频播放器
一个基于C# + WPF开发的,界面外观简洁大方,操作体验良好的音频播放器。
157 0