FormAnimations





4.00/5 (9投票s)
一篇关于Windows窗体动画、移动的文章。
引言
您是否一直想在程序的GUI中实现一些窗口动画?如果答案是是,但是您
- 觉得懒惰,不想浪费时间,
- 想“让别人帮我做”,
- 不知道如何或从哪里开始。
那么,别再担心了,这里有代码和/或DLL可以做到这一点。您将能够让您的窗体在屏幕上从左到右、右到左、从上到下、从下到上移动,还可以淡入、淡出、放大、缩小、摇晃和移动它,这仅仅是一些您可以通过一点点想象力开发的有趣和有趣的事情。
听起来很有趣,对吧?
一些用途
我认为FormAnimations将在您希望窗体执行一些酷炫技巧时提供极大的帮助,例如
- 您可以在程序打开或关闭时使用它,或响应您想要的任何其他事件。
- 我还将其用于我正在开发的Felix the Cat伴侣程序,该程序我将很快发布。
- 您可以将其用作屏幕保护程序,或者屏幕弹跳,或者任何您能想到的东西,您的屏幕就是极限。
使用代码
基本上,所有功能都通过FormAnim.dll提供,非常简单易用。它包含两个类:FormAnimations
和AnimationPreparer
,以及一个名为Constantes
的enum
。
FormAnimations
是核心,所有可用方法都在这里;AnimationPreparer
用于帮助用户部署动画,而Constantes
枚举包含可用的移动以及主窗体可以移动到的一些预定义屏幕位置。
您可以查看代码,甚至可以修改任何算法以满足您的需求,但如果您告知我这些活动或任何改进,那将是一种礼貌。
关注点
在编写代码的过程中,我学到了什么有趣/有趣/令人讨厌的东西吗?
事实上,我学到了,但在我开始抱怨之前,我想指出这段代码是面向窗体的,但它可以很容易地修改以移动其他控件,如按钮、文本框、标签或任何派生自System.Windows.Forms.Control
类的东西。
现在,在我从事这个项目和另一个伴随项目时发现的有趣、好奇但又令人讨厌的“妖精”是
- 显然,.NET在某些图形和图像方面仍然存在一些问题,首先,MSDN指出,如果屏幕的分辨率深度是真彩色或具有超过24位强度颜色,则可能无法显示透明度。这造成了一个问题,因为有些人使用这种分辨率工作,他们将无法看到您设计的窗体,但最奇怪的是,某些控件(如文本框)即使分辨率超过24位强度颜色也能变得透明。
- .NET在刷新窗体及其布局控件方面存在问题,我必须在每次对
Form
进行任何操作后都调用Form.Refresh();
或Form.Update();
(顺便说一句,两者的区别没有清楚说明)。如果我没有这样做,动画运行时根本不会显示Form
的控件。 - 我试图同时运行两个或更多不同的动画,但大多数我尝试过的组合都没有成功,这并不意味着它不可能,或者您想到的组合会遭遇同样的命运,因此我鼓励您尝试任何一种,看看它们是否有效。代码中显示了我的一些成功组合,它们提供了一个示例,说明您如何尝试您自己的组合。
但问题是为什么它们不起作用……有些很难同步,以便效果看起来平滑,或者两个线程都能在同一时间结束,而有些则表现奇怪,对于这种行为,我将其归咎于.NET。我将组合动画
Left2RightGrowVertical
留给您尝试。效果很酷但没有用,窗体从左到右移动,同时垂直增长,问题在于窗体的控件也从左到右移动,而动画的一部分正在进行。 - FormAnimations可以与任何窗体一起使用,即使是非矩形窗体,但我不会对任何奇怪的性能负责。我在处理它们时遇到了很多困难,它们会减慢应用程序的速度,它们不显示图标,它们没有完整的功能,刷新效果不佳,而且.NET不尊重图像的“原始”格式(我的意思是,如果您使用带有透明色的GIF或PNG作为您
Form
的背景,.NET不会在意,忘记动画GIF和imagelists。我将一些动画GIF添加到ImageList
中,当将其分配给Picturebox.Image
时,它们不会显示为动画)。
我可以继续列举我遇到的其他次要甚至可能不太次要的细节,但我将在这里停止,让您自己尝试和发现C# WinForms编程的优点或缺点。
啊,以防您好奇:我使用了由ATI显卡驱动的Windows XP和由Intel Extreme Graphics驱动的Windows 2000 Professional,我不得不处理上述问题。
我必须明确,这些只是我个人的印象,它们可能与您的不同。
历史
FormAnimations是我的第二篇文章。尽管我认为某些动画可以改进,但我认为我短期内不会进行任何改进。但一如既往,任何评论、批评、问题、错误或任何事情都总是受欢迎的。