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