这个问题太宽泛了,无法回答,但是,我在早期就遇到过这样的情况,我需要开始做这样的决策,因为我没有足够的知识。就这样吧……
- 我应该使用 GIF/AVI/MPEG 等吗?
首先,您需要很好地了解Animations 的实际含义。对于视频,动画只是其自身模拟的东西,是视频的一部分。当涉及到软件或应用程序时,这意味着一些对象需要根据一些数学来改变它的一些属性。
一旦你澄清了这一点,你就会更好地理解要做什么。现在,在应用程序中使用 GIF/MPEG 或 aka 视频文件只能创建它具有动画的错觉,而不是实际的。比如说,你想在你的应用程序中添加一个加载微调器。您可以创建一个使用 After Effects 旋转的微调器的 GIF,并将其与 Image 控件一起嵌入到您的应用中。
或者
您实际上可以draw 旋转器/圆圈的一部分并编写代码使其旋转,从而创建一个实际的动画。
无论如何,回到实际问题,答案是IT DEPENDS!。如果我们在谈论动画,那么我们首先需要了解我们的需求。此外,我们需要了解什么是视频,什么是图像。 Gif 只是一组图像,也就是图像文件本身,而 MPEG/AVI 等是视频文件。所以当然,GIF 是要走的路。
- WinForms 与 WPF
嗯,这是我很久以前对动画和所有东西感兴趣时问自己的问题。看,在这两种情况下,如果您知道要实现哪些逻辑,您就可以构建所需的功能。但是,为了简短起见,您必须知道的一句话是,“与 WinForms 相比,当您制作交互式、复杂的 GUI 应用程序时,WPF 是更好的选择”。
假设您想为menu 滑入和滑出设置动画。在 WinForms 中,您必须使用 Timer 并在 Tick 事件中设置菜单的位置,从而每毫秒更改一次属性值。这样就完成了工作,但是当您实际实施它时,您会看到诸如闪烁、屏幕部分被切掉等问题。
所有这些都在 WPF 中得到解决,它非常关注动画。在 WPF 中,我们称它们为StoryBoards。在那里,所有这些属性值更改都在后台处理,您几乎不需要编写任何代码。
但这不应该是在WinForm 和WPF 之间做出决定的唯一因素。你还需要考虑你的技能。例如,在 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,将它设置为Background 或BackgroundImage 到你刚刚的矩形导出,在面板内拖放一个文本框,将其BorderStyle设置为平面,编写一些代码来去除文本框焦点时的边框/边框颜色。
最后,你有一个很棒的带有阴影的文本框。这只是一个例子。您可以借助这些第三方工具在 WinForms 中创建其他复杂的设计,但是是的,这不是纯 WINFORMS!。但再一次,动画和 WinForms 从来都不是一个很好的组合。