WPF 仿QQ登录框翻转效果

突然发现qq登录窗体的翻转特效看起来不错,决定用wpf试试。

主要知识点就是Viewport3D和AxisAngleRotation3D

看一下效果:

下面看一下代码:

主要xaml代码:

<UserControl x:Class="GQ.DirectContentSample"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-namespace:GQ" Width="495" Height="470"><local:Panel3D x:Name="panel" MaxWidth="495" MaxHeight="430"><local:Panel3D.Content><Grid Width="430" Height="330"><Grid.Background><LinearGradientBrush><GradientStop Offset="0" Color="Red"/><GradientStop Offset="0.5" Color="Green"/><GradientStop Offset="1" Color="Blue"/></LinearGradientBrush></Grid.Background><TextBlock Background="Transparent" Focusable="False" FontSize="30"Text="搜一搜:WPF UI" Foreground="White" HorizontalAlignment="Center" VerticalAlignment="Center"/><Button Content="翻转" FontSize="20" Padding="10"HorizontalAlignment="Right" VerticalAlignment="Top"Command="local:Panel3D.RotateCommand"/></Grid></local:Panel3D.Content><local:Panel3D.BackContent><Grid Width="430" Height="330" Background="LightGreen"><TextBlock Background="Transparent" Focusable="False" FontSize="30"Text="这是背面" HorizontalAlignment="Center" VerticalAlignment="Center"/><Button Content="翻转" FontSize="20"  Padding="10"HorizontalAlignment="Right" VerticalAlignment="Top"Command="local:Panel3D.RotateCommand"/></Grid></local:Panel3D.BackContent></local:Panel3D>
</UserControl>

控件的样式:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-namespace:GQ"><DiffuseMaterial x:Key="diffMaterial" Viewport2DVisual3D.IsVisualHostMaterial="True" Brush="White" /><MeshGeometry3D x:Key="meshGeometry3D"  TriangleIndices="0,1,2 2,3,0"TextureCoordinates="0,1 1,1 1,0 0,0"Positions="-1.3,-1.05,0 1.3,-1.05,0 1.3,1.05,0 -1.3,1.05,0" /><Style TargetType="local:Panel3D"><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="local:Panel3D"><ControlTemplate.Resources><local:ContentValueConverter x:Key="ContentConv" /></ControlTemplate.Resources><Border Background="{TemplateBinding Background}"BorderBrush="{TemplateBinding BorderBrush}"BorderThickness="{TemplateBinding BorderThickness}"Width="{TemplateBinding Width}"Height="{TemplateBinding Height}">   <Viewport3D x:Name="PART_Viewport"><Viewport3D.Children><ModelVisual3D><ModelVisual3D.Content><Model3DGroup><DirectionalLight Color="#444" Direction="0,0,-1" /><AmbientLight Color="#BBB" /></Model3DGroup></ModelVisual3D.Content></ModelVisual3D><Viewport2DVisual3D Material="{StaticResource diffMaterial}"Geometry="{StaticResource meshGeometry3D}"><Viewport2DVisual3D.Transform><RotateTransform3D><RotateTransform3D.Rotation><AxisAngleRotation3D Angle="180" /></RotateTransform3D.Rotation></RotateTransform3D></Viewport2DVisual3D.Transform><Viewport2DVisual3D.Visual><Border BorderBrush="Transparent" BorderThickness="1"><ContentPresenter x:Name="PART_BackContentPresenter"Content="{TemplateBinding BackContent, Converter={StaticResource ContentConv}, ConverterParameter=BACK}" ContentTemplate="{TemplateBinding BackContentTemplate}"/></Border></Viewport2DVisual3D.Visual></Viewport2DVisual3D><Viewport2DVisual3D Material="{StaticResource diffMaterial}"Geometry="{StaticResource meshGeometry3D}"><Viewport2DVisual3D.Transform><RotateTransform3D><RotateTransform3D.Rotation><AxisAngleRotation3D Angle="0" /></RotateTransform3D.Rotation></RotateTransform3D></Viewport2DVisual3D.Transform><Viewport2DVisual3D.Visual><Border BorderBrush="Transparent" BorderThickness="1"><ContentPresenter x:Name="PART_FrontContentPresenter"Content="{TemplateBinding Content,Converter={StaticResource ContentConv},ConverterParameter=FRONT}" ContentTemplate="{TemplateBinding ContentTemplate}"/></Border></Viewport2DVisual3D.Visual></Viewport2DVisual3D></Viewport3D.Children></Viewport3D></Border></ControlTemplate></Setter.Value></Setter>
</Style>
</ResourceDictionary>

由于控件类代码太长,就不粘出来了,

需要控件示例项目代码的小伙伴,关注公众号WPF UI,回复 Panel3D 即可获取。

如果喜欢,点个赞呗~

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

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

相关文章

机器人J中WPR_优傲:协作机器人的未来在哪里?

2019年9月17日&#xff0c;第21届中国国际工业博览会于上海国家会展中心如期举办&#xff0c;期间优傲机器人(Universal Robots)公司推出新品&#xff0c;UR16e。有效载荷高达16kg&#xff0c;引起业界广泛的关注。优傲机器人总裁Jrgen von Hollen表示&#xff1a;“在当今不明…

你试过不用if撸代码吗?

试着不用if撸代码&#xff0c;是件很有趣的事&#xff0c;而且&#xff0c;万一你领会了什么是“数据即代码&#xff0c;代码即数据”呢&#xff1f;我在教新手编程时&#xff0c;喜欢给他们一些小小的挑战&#xff0c;比如&#xff1a;不使用if语句(或者三元运算符、switch语句…

C语言解释器的实现--语法解析(五)

1.代码块 代码块是由多个表达式组成的一组代码。它可以看成是以下的形式&#xff1a; { exp1 exp2 ... } 它由"{"开始&#xff0c;由"}"结束&#xff0c;中间包含多条表达式&#xff0c;或者是控制语句。如果不是以"{"开始&am…

NET问答: 对 Linq 中的 Union 和 Concat 的用法困惑

咨询区 Prasad Kanaparthi&#xff1a;我在使用 Union 和 Concat 上有一个困惑&#xff0c;从字面上理解&#xff1a;一个是并集&#xff0c;一个是连接&#xff0c;下面的例子就是我对这两个扩展方法的理解。static void Main(string[] args){var a1 (new[] { 1, 2 }).Union(…

中止是怎么用的_多士炉怎么用 使用多士炉注意事项

阅读本文前&#xff0c;请您先点击上面的蓝色字体&#xff0c;再点击“关注”&#xff0c;这样您就可以继续免费收到最新文章了。每天都有分享。完全是免费订阅&#xff0c;请放心关注。 …

国内 GitHub 造假黑色产业链曝光;开源开发者撤销对 ICE 禁用的决定

0、国内 GitHub 被爆造假&#xff0c;起底背后的黑色产业链作为全球最大的开源社区&#xff0c;GitHub 对于程序员群体而言像是空气般重要的存在&#xff0c;而互联网公司也会通过 GitHub 来进一步了解面试者的编程习惯&#xff0c;技术水平等。但最近知乎上有一篇《中国内地 G…

17款加速效率的CSS工具

作为一个网站设计/开发人员&#xff0c;你必须不断寻找方法来减少设计/开发过程中所花费的时间。这对于提高你的工作效率并最大化你的利润是非常重要的。下面介绍的按功能分类的CSS工具可以有效地节省你设计网站的时间。 表格类 1、CSS Form Code Maker – 很方便地生成“五颜六…

Azure data studio 跨平台数据库管理工具试用

最近折腾 azure sql database 的时候发现了微软的一款新的数据库管理工具&#xff1a;azure data studio。从名字上看 azure data studio 好像是专门为 azure 开发的&#xff0c;其实并不是这样的 。它同样支持对传统sql server的查询与管理。azure data studio 是一款跨平台数…

顺丰gis产品经理_线上面试季丰图科技—顺丰旗下专注GIS领域

WHITer内推——每天9点发布武汉优质互联网企业最新岗位内推机会。内推微信号&#xff1a;whxiaowai 内推邮箱&#xff1a;770554595qq.com01 Java高级开发工程师 12-25K点击查看职位详情 申请内推02高级python开发工程师 12-25K点击查看职位详情 申请内推03 物联网数据运营分析…

腾讯发布95页重磅报告:全面预测中国互联网未来5年趋势

腾讯科技企鹅智酷联合63位互联网行业领袖与专家发布了《企鹅智酷中国科技&互联网创新趋势白皮书&#xff08;2017&#xff09;》&#xff0c;预测了未来5年的中国互联网发展趋势。此次公开发布的版本共95页PPT&#xff0c;其中“移动直播产业”、“媒体与内容创业”、“互联…

ubuntu下mysql-python模块的安装

安装步骤&#xff1a; 1、sudo apt-get install python-setuptools 2、sudo apt-get install libmysqld-dev 3、sudo apt-get install libmysqlclient-dev 4、sudo apt-get install python-dev 5、sudo easy_install mysql-python 测试下&#xff1a; 在python交互式窗口&#…

.NET 6 平台系列1 .NET Framework发展历程

自1995年互联网战略日以来最雄心勃勃的事业 —— 微软.NET战略, 2000年6月30日。微软公司于2002年2月13日正式推出第一代.NET平台 .NET Framewrok 1.0。借助于自家强大易用的 Windows 系统&#xff0c;.NET Framework1.0 主要提供了面向 Windows 桌面&#xff08;Windows Form&…

3 src 获取_CVE-2019-15846:Exim远程获取root权限漏洞分析

报告编号&#xff1a;B6-2019-103101报告来源&#xff1a;360-CERT报告作者&#xff1a;360-CERT更新日期&#xff1a;2019-10-310x00 漏洞背景2019年9月6日18&#xff1a;00&#xff0c;exim发布exim-4.92.2版本修复了CVE-2019-15846&#xff0c;攻击者可以利用此漏洞远程获取…

jwt与token+redis,哪种方案更好用?

问&#xff1a;jwt与tokenredis&#xff0c;哪种方案更好用&#xff1f;其实JWT就是Json Web Token&#xff0c;就是Token的典型方式。题主的JWT和TokenRedis的区别&#xff0c;其实都是Token&#xff0c;只是JWT的可靠性保障是来源于加密算法(对称加密和非对称两种)&#xff0…

ADO.NET的记忆碎片(六)

校验DataSet中的数据数据库提供了很多的机制使数据是有效的。ADO.NET的DataSet提供了许多可在数据库系统中使用的相同的数据效验机制。一般可以将这些效验的机制分成两类&#xff1a;列级别的限制和表级别的效限制。列级别的限制&#xff1a;验证DataColumn的属性DataColumn对象…

想不到吧?数学还有如此妙用!

随着科技的快速发展&#xff0c;人工智能的重要性日渐显现。对于大多数新手来说&#xff0c;弄清楚入门人工智能需要哪些数学基础、需要熟悉什么框架等&#xff0c;都至关重要。机器学习是一个异常丰富的研究领域&#xff0c;有大量未解决的问题&#xff1a;公正、可解释性、易…

python函数列表永久修改_python 禁止函数修改列表的实现方法

有时候&#xff0c;需要禁止函数修改列表。例如要对裂变进行修改操作&#xff0c;也要保留原来的未打印的设计列表&#xff0c;以供备案。为解决这个问题&#xff0c;可向函数传递列表的副本而不是原件&#xff1b;这样函数所做的任何修改都只影响副本&#xff0c;而丝毫不影响…

ASP.NET Core 开源项目 nopCommerce,一款沉淀13年的电商开源佳作!

技术在不断更新迭代&#xff0c;.NET 6 的正式版也即将正式发布&#xff0c;在.NET Core 开源项目方面&#xff0c;CMS的代表作是SiteServer&#xff0c;商城的开源系统有没有什么代表作&#xff1f;肯定是有的&#xff0c;强烈推荐这套开源免费的商城系统&#xff1a;nopComme…

Base PyQt4, Simple Web APP Framwork

长时间以来&#xff0c;一直针对Linux 服务器开发后台程序&#xff0c;每天面对的是黑框框&#xff0c;输出只有日志文件。偶尔需要模拟客户端测试&#xff0c;要么是写几行php代码&#xff0c;在浏览器上点一点&#xff0c;要么是写个小Python脚本在shell中执行一下。写了一些…

机器学习核心算法之——贝叶斯方法

1.贝叶斯公式贝叶斯公式已经成为机器学习的核心算法之一&#xff0c;诸如拼写检查、语言翻译、海难搜救、生物医药、疾病诊断、邮件过滤、文本分类、侦破案件、工业生产等诸多方面都有很广泛的应用&#xff0c;它也是很多机器学习算法的基础。在这里&#xff0c;有必要了解一下…