【发布时间】:2014-03-03 13:41:14
【问题描述】:
我正在为我的应用程序创建一个 CustomButton 控件。现在,我想做的是,当鼠标移到按钮上时,它应该显示发光效果,而当鼠标离开时,它应该恢复正常。但发光效果不应立即显示。它应该以动画形式显示。就像 Chrome 浏览器标签页。我已经在按钮控件中尝试过这个逻辑。
这是我的逻辑。但是,我认为这不是正确的方法。请建议获得发光效果的正确方法。
private void ShowGlow()
{
for (int i = 0; i<50; i+= 5)
{
Sleep(100);
Graphics g = this.CreateGraphics();
Color color = Color.FromArgb(i, 150,150,25);
g.FillRectangle(new SolidBrush(color), this.ClientRectangle);
}
}
其他详情 Visual Studio 2005、Windows XP、Windows 窗体控件
【问题讨论】:
-
为此我强烈推荐 WPF。 winforms 不支持动画、效果或类似的东西。
-
我的应用程序是一个带有 .net framework 2.0 的 Windows 窗体应用程序,我无法将其转换为 WPF 应用程序。
-
@HighCore 我同意你的观点,winform 不支持这个。但这并不意味着我们必须妥协;如果我们花时间,我们可以做到。
-
@HighCore 对获胜形式的一些不必要的苛刻。它可能不像 WPF 那样现代,而且根本不是为 Web 项目设计的,但是使用 GDI+ 进行绘图是快速且用途广泛的。在某些情况下,您必须覆盖 OnPaintBackground 以防止闪烁,但这不是“硬件加速”问题。
-
很酷的东西@HighCore :-)。毫无疑问,WPF 支持一些很酷的 GUI 动画,并且可能具有 GDI+ 无法跟上的效果。但是,如果您需要进行严格的 CAD 或 GIS 渲染,加载具有数万个坐标的 WPF 几何图形将导致您的应用程序基本上停止运行,而 GDI+ 可以相对轻松地渲染相同的 2D 形状。此外,开发人员通常无法控制他们要使用的技术,因此仅仅因为您在 Forms 中进行开发而完全放弃并不是一种有用的方法。