.NET WPF 窗口淡入和淡出动画

2024-05-05

下面是窗口淡入和淡出动画的代码片段:

// Create the fade in storyboard
fadeInStoryboard = new Storyboard();
fadeInStoryboard.Completed += new EventHandler(fadeInStoryboard_Completed);
DoubleAnimation fadeInAnimation = new DoubleAnimation(0.0, 1.0, new Duration(TimeSpan.FromSeconds(0.30)));
Storyboard.SetTarget(fadeInAnimation, this);
Storyboard.SetTargetProperty(fadeInAnimation, new PropertyPath(UIElement.OpacityProperty));
fadeInStoryboard.Children.Add(fadeInAnimation);

// Create the fade out storyboard
fadeOutStoryboard = new Storyboard();
fadeOutStoryboard.Completed += new EventHandler(fadeOutStoryboard_Completed);
DoubleAnimation fadeOutAnimation = new DoubleAnimation(1.0, 0.0, new Duration(TimeSpan.FromSeconds(0.30)));
Storyboard.SetTarget(fadeOutAnimation, this);
Storyboard.SetTargetProperty(fadeOutAnimation, new PropertyPath(UIElement.OpacityProperty));
fadeOutStoryboard.Children.Add(fadeOutAnimation);

以下是触发动画的辅助方法:

/// <summary>
/// Fades the window in.
/// </summary>
public void FadeIn()
{
   // Begin fade in animation
   this.Dispatcher.BeginInvoke(new Action(fadeInStoryboard.Begin), DispatcherPriority.Render, null);
}

/// <summary>
/// Fades the window out.
/// </summary>
public void FadeOut()
{
   // Begin fade out animation
   this.Dispatcher.BeginInvoke(new Action(fadeOutStoryboard.Begin), DispatcherPriority.Render, null);
}

除了两个问题之外,该代码运行良好:

  1. 在 FadeIn() 上,窗口以丑陋的黑色背景开始,然后正确地进行动画处理。
  2. 当 FadeOut() 动画正确时,窗口会以丑陋的黑色背景结束。

为什么会发生这种情况?如何使该动画流畅运行而不会出现黑色背景问题?


你需要设置AllowsTransparency to true on the Window让它完全透明。

不幸的是,这只能通过WindowStyle=None,因此您必须实现自己的标题栏。

这会带来一些严重的性能问题,因为窗口无法再进行硬件渲染。如果你走这条路我强烈建议设置RenderOptions.ProcessRenderMode to RenderMode.SoftwareOnly(.NET 4.0 或更高版本)在 UI 线程上,以便在简单的组合中获得可接受的性能。

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

.NET WPF 窗口淡入和淡出动画 的相关文章

  • 强制 protobuf-net 忽略 IEnumerable/ICollection 接口

    如何让 protobuf net v2 忽略我的类实现 ICollection IEnumerable 等的事实 对于这个特定场景 我只希望序列化标记为 ProtoMember 的字段 我目前正在从使用 protobuf net v1 转换
  • 捕获 .aspx 和 .ascx 页面中的异常

    问题说明了一切 请看以下示例代码 ul li li ul
  • 链接 .Net 程序集

    这都是假设 所以请耐心等待 假设我正在用 C 编写一个名为 Foo 的工具 输出是 foo exe 我发现了一些我喜欢使用的非常棒的库 称为 Bar 我可以在我的项目中将其引用为 bar dll 当我构建项目时 我的输出目录中有 foo e
  • 调整屏幕和字体设置的 WPF 应用程序(或者,我如何将 DLU 与 WPF 中的单元相关联?)

    在MFC中 对话框的设计使用DLUs http msdn microsoft com en us library bb847924 aspx 在 WPF 中 我们以 1 96 英寸为单位指定 虽然这确实会缩放窗口和视觉元素 但我们如何使 W
  • 现代 UI WPF 导航

    我正在使用现代 ui wpf 并尝试从 CheckLogin xaml 页面导航到 MainWindow xaml 页面 它们位于解决方案根目录中 我在 CheckLogin xaml 中写了这样的内容 BBCodeBlock bbBloc
  • 如何对使用 Controller.User 变量的控制器操作进行单元测试?

    我有一个控制器操作 如果用户已经登录 它会自动重定向到新页面 User Identity IsAuthenticated 针对这种情况编写单元测试以确保重定向发生的最佳方法是什么 我一直在使用以下 Mocks 和 Moq 来允许在我的单元测
  • .NET 和 Mono 之间的开发差异

    我正在研究 Mono 和 NET C 将来当项目开发时我们需要在 Linux 服务器上运行代码 此时我一直在研究 ASP NET MVC 和 Mono 我运行 Ubuntu 发行版 想要开发 Web 应用程序 其他一些开发人员使用 Wind
  • 通过并行任务库限制运行的活动任务数量的最佳方法

    考虑一个队列持有lot需要处理的作业 队列的限制是一次只能获取 1 个作业 并且无法知道有多少个作业 这些作业需要 10 秒才能完成 并且需要大量等待 Web 服务的响应 因此不受 CPU 限制 如果我使用这样的东西 while true
  • WPF ListBoxItem 双击?

    WPF ListBox 没有 DoubleClick 事件 至少据我所知没有 是否有针对此问题的解决方法 让我双击某个项目即可让事件处理程序对其执行某些操作 感谢您的帮助 可以将带有参数的命令绑定到ListBoxItem不使用代码隐藏 or
  • 如何确定任务栏位于哪个屏幕

    Screen PrimaryScreen 并不总是有效 因为在多显示器设置中 用户可能会将其任务栏移动到主屏幕以外的屏幕 找到具有最小工作区域的屏幕也不起作用 因为可能存在具有不同分辨率的显示器 有什么办法可以通过任务栏定位屏幕吗 您可以使
  • 在 .NET List 中设置项目 null 是否可以使其可用于垃圾回收,这是一个好主意吗?

    假设我有一个大列表 其中每个项目都被处理一次 然后在长时间操作期间不再查看 List
  • C#中out参数有什么用

    你能告诉我具体的用途是什么吗out范围 相关问题 ref 和 out 和有什么不一样 C https stackoverflow com questions 516882 what is the difference between ref
  • 如何在运行时向 TypeDescriptor 添加属性级 Attribute?

    我想向对象的属性添加一些自定义的以 PropertyGrid 为中心的属性 以提供更丰富的编辑 隐藏一些值并将它们分组到类别中 因为我正在使用的那个类不提供此类功能 我无能为力关于它 实际上 它是为 MS 的应用程序设置生成代码的 因此您无
  • 即使更新语句没有影响任何行,ExecuteNonQuery 返回 1

    我在这里面临一个非常奇怪的问题 我的 DAL 是使用编写的OdbcConnection对象并且工作完美 然而 我必须尊重一些要求 因此必须移动系统来使用MySqlConnection 你会说 不应该有任何问题 但是 现在有一点误解 当我执行
  • 为什么需要 JsonRequestBehavior?

    Why is Json Request Behavior needed 如果我想限制HttpGet对我的动作的请求我可以用 HttpPost 属性 Example HttpPost public JsonResult Foo return
  • 为 Rest Web 服务创建 WCF 代理

    我有一个复杂的 WCF Rest 服务 它需要多个输入和对象 我不能简单地通过在 Fiddler 中执行 HTTP POST 来调用它 因为要提供的数据太多 我可以 但这将花费我很长时间 所以我想使用代理在代码中完成它 有没有办法为 NET
  • 使用 C# 将多个音频样本混合到单个文件中

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个能够创建音频文件 mp3 或 wav 的库 NAudio http www codeple
  • 应用程序处于中断模式。您的应用程序已进入中断状态,

    我发现自己遇到了同样的问题here https stackoverflow com questions 36204009 disable break mode page in vs2015 我在 dll 中使用 Windows 窗体 这是针
  • Type.MakeByRefType 的反义词是什么

    The Type MakeByRefType http msdn microsoft com en us library system type makebyreftype aspx NET 中的方法返回类型的 by ref 版本 例如传递
  • 如何使用默认电子邮件客户端发送电子邮件?

    我想使用系统的默认电子邮件客户端 雷鸟 outlook 等 从 net windows 窗体应用程序发送电子邮件 我想预设主题和正文 我认为有一种方法可以通过向 Windows 资源管理器发送类似的内容来做到这一点 mailto 电子邮件受

随机推荐

  • CDI/Weld - 结束对话后如何处理浏览器页面刷新?

    在使用 CDI 的早期 我导航到一个长时间运行的页面 使用 faces redirect true 进行对话 因此我有一个类似 myPage xhtml cid 1 的 URL 在某个时刻我结束了谈话 我的意思是这必须是合理的事情 或者你也
  • 通过 IoC 容器实例化 WCF 服务

    是否可以使 WCF 运行时通过 IoC 容器而不是通过其通常的进程来实例化服务 此外 考虑到容器的类型生活方式配置与服务的 InstanceContextBehavior 之间存在潜在冲突 这种方法会是一个糟糕的主意吗 我知道我可能完全问错
  • 在 WordPress 页面上嵌入 swf

    我正在尝试将 swf 嵌入到 WordPress 页面中 这听起来很简单 但它不起作用 我不明白为什么 我已将所有相关文件上传到服务器上 并且我相当确定所有文件路径都是正确的 包含 fla 和 swf 文件的文件夹还包含一个 index h
  • 如何在 Xcode 7 beta 4 中调用 SecItemCopyMatching?

    在使用 Swift 的 Xcode 6 和 7 的早期版本中 以下语法可以使用 var secureItemValue Unmanaged
  • 在 JavaScript onClick 事件处理程序中转义双引号

    下面的简单代码块可以在静态 HTML 页面中提供 但会导致 JavaScript 错误 您应该如何转义中嵌入的双引号onClick处理程序 即 xyz 请注意 HTML 是通过从数据库中提取数据动态生成的 其中的数据是其他可能带有单引号或双
  • 从列表中的每个项目的支持 bean 方法中设置 itemDisabled

    我有一个单选按钮列表 并且想根据支持 bean 方法的结果禁用某些项目
  • 如何检查 firebase 中是否存在孩子? [复制]

    这个问题在这里已经有答案了 我有一个 firebase 它有一个名为 users 的节点 用户给出一个用户名 我想检查该用户名是否已作为用户节点的子节点存在 这是我目前正在尝试的代码 平台是安卓 String myUsername user
  • 如何更改 Kotlin 上生成的 TODO() 函数体?

    我需要在我的代码上留下一些稍后要做的事情TODO 自动生成的会产生一个很长的评论 如下所示 TODO not implemented To change body of created functions use File Settings
  • Requests-html 导致 OSError: [Errno 8] 调用 html.render() 时执行格式错误

    我正在使用 requests html 并尝试渲染功能 但收效甚微 当我使用 python3 8 运行这个脚本时 usr bin python3 from requests html import HTML file scrape temp
  • 您忽略了哪些 PEP 8 准则,哪些是您坚持的? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 多年来 我编写的 Python 越多 我就越发现自己同意大多数准则 尽管我出于自己的原因始终有意地违反了一些准则 我很想知道 PEP 8 也可能
  • 在 Android 中的计时器内运行异步任务

    我正在开发一个基本的聊天类型应用程序 目前我正在运行代码 如下所示 class GetMsgs extends AsyncTask
  • 长按 UIButton

    我想知道如果有人按住 UIButton 按键的时间过长 我是否可以捕获 UIButton 的事件 通过通知或其他机制 比按一次按钮的时间更长 假设有人按住按钮几秒钟 谢谢 你可以加UILongPressGestureRecognizer h
  • Android 是否可以同时使用前后摄像头[重复]

    这个问题在这里已经有答案了 我想同时使用设备的前置和后置摄像头 在我的应用程序中 屏幕的前半部分将显示后置摄像头的预览 屏幕的下半部分将显示前置摄像头的预览 我尝试过设置两个不同的相机预览 但是当我打开应用程序时 屏幕的前半部分 显示后置相
  • 将文件附加到 WCF REST 服务响应

    我有一个看起来像这样的资源 users id summary format format When format是 xml 或 json 我用一个由 WCF 自动编码的用户摘要对象进行响应 到目前为止还不错 但当format等于 pdf 我
  • 什么是样板代码、热点代码和热点?

    我知道这些术语是在性能实现 优化的背景下使用的 最近一直在研究这个问题 并尝试过搜索 但没有得到任何例子 清楚地阐述 描述这些概念以及在现实世界开发场景中实现这些问题 概念 有人可以彻底解释这些术语 示例场景以及可能使用这些概念和术语的地方
  • 如何在 jQuery 中检查 null 对象

    我正在使用 jQuery 我想检查页面中是否存在某个元素 我写了以下代码 但它不起作用 if btext i null alert btext i text btext i text Branch i 如何检查元素是否存在 检查jQuery
  • Python多线程模型

    我已经研究 python 中的多线程有一段时间了 但是我对一些问题感到困惑 首先 python线程库创建的线程是用户级线程还是内核级线程 书上说用户级线程必须映射到内核线程并且 操作系统仅创建和维护内核级线程 python中将使用哪种线程模
  • 如何重命名 Rails 4 应用程序?

    rails plugin install git github com get Rename git将允许我们仅重命名 Rails 3 应用程序 是否有任何 gem 可用于重命名 Rails 4 应用程序 如果没有 请建议我更好的重命名方法
  • ASP .Net 报表查看器控件中的本地报表与服务器报表

    在我们当前工作的 ASP Net 站点之一中 我们有大量 SSRS 报告 我们对该站点进行了表单身份验证 并且已在报表服务器中创建并部署了报表 当我们设置报表查看器控件来访问服务器报表时 我们遇到了很多身份验证问题 我只是想知道使用本地报告
  • .NET WPF 窗口淡入和淡出动画

    下面是窗口淡入和淡出动画的代码片段 Create the fade in storyboard fadeInStoryboard new Storyboard fadeInStoryboard Completed new EventHand