【发布时间】:2009-01-31 18:27:47
【问题描述】:
我有一个 winform 应用程序,它根据用户选择呈现一些图表。我想模拟一个 ajax 样式加载器,这样当用户进行选择时,表单上会有一个叠加层,中间有一个动画。实现这一目标有哪些选择?我正在考虑加载一个中间有动画 (gif) 的面板,添加一些不透明度。
编辑~有人吗?
编辑~Here 是我找到的解决方案...终于!没有WPF废话。
【问题讨论】:
标签: .net winforms animation swfloader
我有一个 winform 应用程序,它根据用户选择呈现一些图表。我想模拟一个 ajax 样式加载器,这样当用户进行选择时,表单上会有一个叠加层,中间有一个动画。实现这一目标有哪些选择?我正在考虑加载一个中间有动画 (gif) 的面板,添加一些不透明度。
编辑~有人吗?
编辑~Here 是我找到的解决方案...终于!没有WPF废话。
【问题讨论】:
标签: .net winforms animation swfloader
WinForms 在这类事情上相当薄弱——WPF 可以更好地处理这种情况。你可以做几件事:
1) HACK! 创建一个新的无模式、无边界表单,其中包含您的等待控件,并将其放在现有表单上。 AFAIK 您不能将透明度分配给任何开箱即用的 WinForms 控件。确保当您现有的表单移动时,您的新表单也会移动。这是一个彻头彻尾的黑客攻击。
2) 从头开始创建您自己的 WinForms 控件并将其绘制在您现有的表单上。成本回报率高。
3) 对这种形式使用 WPF,这将使您具有更大的灵活性。那是一个全新的框架……只是为了一种形式?
4) 暂时隐藏图表,让您的进度面板看起来非常漂亮。
【讨论】:
WinForms 的 PictureBox 控件无法处理动画 gif。
您仍然可以使用 PictureBox,但可以自己翻帧。只需每 50 或 100 毫秒设置一次定时器,以保持图片框上的帧旋转。
要创建覆盖,我会尝试黑色面板,它会用一些 alpha 值覆盖整个表单。但是,它不适用于低于 Windows XP 的任何设备。如果我没记错的话,Windows 2000 及更低版本无法处理 Winforms 中的透明度。
【讨论】:
正如 Saif 已经说过的,这些是完全可定制的加载器:
【讨论】: