用VB编程实现窗体背景由上至下的颜色逐渐变浅

用VB编程实现窗体背景由上至下的颜色逐渐变浅,第1张

用VB编程实现窗体背景由上至下的颜色逐渐变浅

很多应用程序的安装界面都采用了标准的由蓝到黑渐变的背景,你可以用如下代码实现这种效果

Sub Dither(vForm As Form)

Dim intLoop As Integer

vForm.DrawStyle = vbInsideSolid

vForm.DrawMode = vbCopyPen

vForm.ScaleMode = vbPixels

vForm.DrawWidth = 2

vForm.ScaleHeight = 256

For intLoop = 0 To 255

vForm.Line (0, intLoop)-(Screen.Width, intLoop - 1), RGB(0, 0, 255 - intLoop), B

Next intLoop

End Sub

Private Sub Form_Activate()

Dither Me

End Sub

将窗体的AutoRedraw属性设为True.

如果想得到由红到黑的渐变,只需如下改动:

vForm.Line (0, intLoop)-(Screen.Width, intLoop - 1), RGB(255 - intLoop, 0, 0), B

以下是由绿到黑的渐变效果

vForm.Line (0, intLoop)-(Screen.Width, intLoop - 1), RGB(0,255 - intLoop, 0), B

也容易,如果是黑白三个颜色加上相同的渐变量,彩色的是起始颜色的三个分量与终止颜色的对应三个分量的差值,再除于相同的份数,就得出三原色各自的步进量。

窗体上放个图片框试试下面代码:

    Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint

        Dim startColor As Color = Color.Red

        Dim endColor As Color = Color.Green

        Dim s As String = "vb.net 如何使文字能渐变颜色,就是颜色慢慢变淡然后在慢慢恢复?"

        Dim Steps As Integer = s.Length \ 2

        Dim StepR As Integer = (CInt(endColor.R) - startColor.R) \ Steps

        Dim StepG As Integer = (CInt(endColor.G) - startColor.G) \ Steps

        Dim StepB As Integer = (CInt(endColor.B) - startColor.B) \ Steps

        Dim R As Integer = startColor.R

        Dim G As Integer = startColor.G

        Dim B As Integer = startColor.B

        Dim drawFont As New System.Drawing.Font("Arial", 16)

        Dim X As Integer = 50

        For i As Integer = 1 To Steps

            Dim drawBrush As New SolidBrush(Color.FromArgb(R, G, B))

            e.Graphics.DrawString(s.Substring(i - 1, 1), drawFont, drawBrush, X, 50.0)

            X += 18

            R += StepR

            G += StepG

            B += StepB

        Next

        For i As Integer = 1 To Steps

            Dim drawBrush As New SolidBrush(Color.FromArgb(R, G, B))

            e.Graphics.DrawString(s.Substring(i + Steps - 1, 1), drawFont, drawBrush, X, 50.0)

            X += 18

            R -= StepR

            G -= StepG

            B -= StepB

        Next

  End Sub

'单色渐变

Private Sub Form_Click()

Randomize

c2 = Int(Rnd * 256)

c3 = Int(Rnd * 256)

c = Int(Rnd * 3 + 1)

d = (Me.Height - 500) / 254

Me.DrawWidth = d \ 15 + 1

For i = 0 To (Me.Height - 500) Step d

Me.Line (0, i)-(Me.Width, i), Choose(c, RGB(c1, c2, c3), RGB(c2, c1, c3), RGB(c2, c3, c1))

c1 = c1 + 1

Next

End Sub


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12002646.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存