如何在vb.net中使用带淡入/淡出的标签显示消息?

时间:2014-09-25 14:35:11

标签: vb.net winforms

有没有人知道如何使用淡入/淡出来制作代码以在标签中显示文字。

示例:我在其中有一个表单和一个标签(VISIBLE = FALSE)

如果我点击一个按钮(让我们说Button1)。

标签将变为可见,并且将开始淡入。

也许只有2秒钟。在2秒后,标签将变为VISIBLE = FALSE。提前谢谢。

2 个答案:

答案 0 :(得分:1)

在Winforms中制作视觉效果的可靠方法是使用自定义绘图,理想情况下使用DirectDraw。在那里,您可以完全控制绘图过程。如果你使用Timer解决方法,你会发现一个不规则/烦人的闪烁。如果您在制作动画后,WPF是一个很好的建议。请注意,WinForms不是为动画而构建的,这项技术应该可以轻松处理系统资源,并且可以通过非常慢的网络连接在RDP上运行在旧的和过时的硬件上。

我知道你在想什么......“你怎么能忍受静态/无聊的灰色灰色东西?”好吧,事实证明用户实际上可以接受这个限制,因为重要的是你的软件如何解决他们的问题,而不是它有多好。至少对于许多商业应用来说都是如此。例如,主要的着名连锁店仍然使用30年前的类似DOS的提示,即使没有动画,鼠标也不存在。我还知道加拿大至少有一家保险公司,其中部分功能是纯文字界面,每个人都可以。

如果您没有开发业务应用程序,WinForms不是一个平台的好选择。

答案 1 :(得分:0)

here找到了用户希望制作半透明标签的地方。我相信你能从这里得到一些好处!

Imports System
Imports System.Drawing
Imports System.Windows.Forms

' <summary>
' A label that can be transparent.
' </summary>
Public Class TransparentLabel
    Inherits Control
    ' <summary>
    ' Creates a new "TransparentLabel" instance.
    ' </summary>
    Public Sub New()
        TabStop = False
        Dim transparencyValue As Integer = 15 '0 is all transparent, 255 is solid
        ForeColor = Color.FromArgb(transparencyValue, ForeColor.R, ForeColor.G, ForeColor.B)
    End Sub

    ' <summary>
    ' Gets the creation parameters.
    ' </summary>
    Protected Overrides ReadOnly Property CreateParams() As CreateParams
        Get
            Dim cp As CreateParams = MyBase.CreateParams
            cp.ExStyle = cp.ExStyle Or &H20
            Return cp
        End Get
    End Property

    ' <summary>
    ' Paints the background.
    ' </summary>
    ' <param name="e">E.</param>
    Protected Overrides Sub OnPaintBackground(ByVal e As PaintEventArgs)
        ' do nothing
    End Sub

    ' <summary>
    ' Paints the control.
    ' </summary>
    ' <param name="e">E.</param>
    Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
        Using brush As SolidBrush = New SolidBrush(ForeColor)
            e.Graphics.DrawString(Text, Font, brush, -1, 0)
        End Using
    End Sub

End Class

修改

经过一小段研究后,this出现在代码项目中。它将图像设置为半透明。

有了这个,与timer结合可以让你生成你想要的东西。

因此,在time_Tick事件中,请使用“淡化代码”。不透明度达到0后,只需停止计时器并重置。 :)

修改编辑

this link是一个讨论板,讨论如何做到(希望如此)。