【问题标题】:How to display animations?如何显示动画?
【发布时间】:2020-08-21 16:07:58
【问题描述】:

好的,我有一个项目,用OEM RX-8 sat nav hood 构建一个汽车电脑!虽然我喜欢这个人选择的界面,但我要自己写。

所以我有两个问题:

什么是“首选”(我敢说最好)类型的动画媒体? IE:Gif、SVG、MPeg、Avi 等。

一旦确定了#1,你会在 WinForms 还是 WPF 中做呢?由于项目将具有其他第 3 方引用,因此必须是这两者之一。

当需要自定义启动屏幕时,我的默认设置总是转到 GIF 和 WinForms。我已经很多年没有做过桌面项目了,所以想看看是否有更新或更好的选择。

我的想法将是两个动画。一个 3 到 5 秒长的“加载”和一个在导航菜单屏幕时始终可以看到的“背景”。

谢谢!

【问题讨论】:

    标签: c# wpf winforms animation


    【解决方案1】:

    这个问题太宽泛了,无法回答,但是,我在早期就遇到过这样的情况,我需要开始做这样的决策,因为我没有足够的知识。就这样吧……

    1. 我应该使用 GIF/AVI/MPEG 等吗?

    首先,您需要很好地了解Animations 的实际含义。对于视频,动画只是其自身模拟的东西,是视频的一部分。当涉及到软件或应用程序时,这意味着一些对象需要根据一些数学来改变它的一些属性。

    一旦你澄清了这一点,你就会更好地理解要做什么。现在,在应用程序中使用 GIF/MPEG 或 aka 视频文件只能创建它具有动画的错觉,而不是实际的。比如说,你想在你的应用程序中添加一个加载微调器。您可以创建一个使用 After Effects 旋转的微调器的 GIF,并将其与 Image 控件一起嵌入到您的应用中。

    或者

    您实际上可以draw 旋转器/圆圈的一部分并编写代码使其旋转,从而创建一个实际的动画。

    无论如何,回到实际问题,答案是IT DEPENDS!。如果我们在谈论动画,那么我们首先需要了解我们的需求。此外,我们需要了解什么是视频,什么是图像。 Gif 只是一组图像,也就是图像文件本身,而 MPEG/AVI 等是视频文件。所以当然,GIF 是要走的路。

    1. WinForms 与 WPF

    嗯,这是我很久以前对动画和所有东西感兴趣时问自己的问题。看,在这两种情况下,如果您知道要实现哪些逻辑,您就可以构建所需的功能。但是,为了简短起见,您必须知道的一句话是,“与 WinForms 相比,当您制作交互式、复杂的 GUI 应用程序时,WPF 是更好的选择”。

    假设您想为menu 滑入和滑出设置动画。在 WinForms 中,您必须使用 Timer 并在 Tick 事件中设置菜单的位置,从而每毫秒更改一次属性值。这样就完成了工作,但是当您实际实施它时,您会看到诸如闪烁、屏幕部分被切掉等问题。

    所有这些都在 WPF 中得到解决,它非常关注动画。在 WPF 中,我们称它们为StoryBoards。在那里,所有这些属性值更改都在后台处理,您几乎不需要编写任何代码。

    但这不应该是在WinFormWPF 之间做出决定的唯一因素。你还需要考虑你的技能。例如,在 WinForms 中,您只需拖放并创建您的设计。当然,您可以使用自定义外观创建复杂的Custom Controls。这需要大量的 C# 知识以及一些大量的设计原则。在 WPF 中,您不仅需要使用 C# 编写逻辑,还需要使用 XAML 创建设计。您还需要对一些缓动函数的数学有很好的理解(但不是必需的)。

    如果您认为自己可以付出努力并且必须拥有出色的 GUI 应用程序,请使用 WPF 并使用很少的 GIF(整个应用程序中只有一两个),并通过 StoryBoards 创建大多数动画。如果您只想要一个 GUI 应用程序,也许外观漂亮但没有动画,请使用 WinForms。但是,在 WinForms 中使用纯 C# 编写动画所需的工作量比在纯 XAML 或 After Effects 中编写动画所需的工作量要多。

    希望这个答案可以帮助您做出正确的决定。干杯!

    编辑 0.1

    建议最多使用一个或两个 GIF 的原因是因为我个人认为 WPF 在通过Image 控件播放此类文件时会消耗更多内存并且还可能存在内存泄漏。所以要非常小心。

    编辑 0.2

    好吧,正如我提到的,可以使用 WinForms 制作复杂的 GUI 应用程序,让我解释一下如何完成它。

    假设您想要一个带有蓝色边框和阴影的文本框,您不能纯粹在 WinForms 中创建它。但它仍然可以完成。如果你知道 Photoshop,你可以简单地画一个带有阴影的rectangle,导出它,在你的Window 中拖放一个Panel,将它设置为BackgroundBackgroundImage 到你刚刚的矩形导出,在面板内拖放一个文本框,将其BorderStyle设置为平面,编写一些代码来去除文本框焦点时的边框/边框颜色。

    最后,你有一个很棒的带有阴影的文本框。这只是一个例子。您可以借助这些第三方工具在 WinForms 中创建其他复杂的设计,但是是的,这不是纯 WINFORMS!。但再一次,动画和 WinForms 从来都不是一个很好的组合。

    【讨论】:

    • 这么说吧......这个决定更容易做出。谢谢奥萨夫。动画的目的是“养眼”,与应用程序本身的交互为零。我有一个朋友对 After Effects 了如指掌!感谢您的时间,我需要的答案! :) 所以它毕竟是 Winforms 中的 C#!
    • @LeadMagnet,干杯!很高兴它有帮助。但是,我正在做一些编辑。你也可以看看。
    • 过去,是的,我知道在 WinForms 中设置动画控件的缺陷。在这个项目上对我来说很幸运,它只是“背景”。不会有其他任何东西的动画,因为它会在使用过程中引起严重(潜在危险)的分心。另外,在我看来,动画对用户来说总体来说很耗时。感谢您的更新!一切都好!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-04
    相关资源
    最近更新 更多