i want to display all possible colors on a form (i am using timer with 500 interval).

what logic should be there to display all possible color (i want to display colors which are more closer to each other like red to pink not just red to black). color should be changed every half second with its closet matching color value.

and i don't know the how to implement logic.

how to use color value(0 to 255 ) for red , green , blue so that it looks that color change to its closest matching color value.

i hope that you underatnd what i want to do .

Recommended Answers

All 6 Replies

Perhaps follow this lesson

Perhaps this will help you.

i done with the code below and it shows color values but not all color values (i think that it can be more improved)...

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Static x, y, z As Integer
        If x < 255 Then
            BackColor = Color.FromArgb(x, y, z)
            x = x + 1
        ElseIf y < 255 Then
            BackColor = Color.FromArgb(x, y, z)
            y = y + 1
        ElseIf z < 255 Then
            BackColor = Color.FromArgb(x, y, z)
            z = z + 1
        Else
            Exit Sub
        End If
End Sub

Change your code to

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    Static x, y, z As Integer
    If x < 3 Then
        BackColor = Color.FromArgb(x, y, z)
        x = x + 1
    ElseIf y < 3 Then
        BackColor = Color.FromArgb(x, y, z)
        y = y + 1
    ElseIf z < 3 Then
        BackColor = Color.FromArgb(x, y, z)
        z = z + 1
    Else
        Timer1.Stop
    End If

    debug.writeline(x & " " & y & " " & z)

End Sub

And you will see your problem. When you fix the code for this case then you can change back to 255. What I think you want is

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

    Static x As Integer = -1
    Static y As Integer = 0
    Static z As Integer = 0
    Const maxval As Integer = 2

    If x < maxval Then
        x = x + 1
    ElseIf y < maxval Then
        x = 0
        y = y + 1
    ElseIf z < maxval Then
        x = 0
        y = 0
        z = z + 1
    Else
        Timer1.Stop()
    End If

    BackColor = Color.FromArgb(x, y, z)

End Sub

thanks for your reply but its not creating colors in a pattern what i think . it shows only black like color.

as a hint to understand the problem :
you can imagine that i want to show color changing every 10 ns . like we see while installing window 8 .(color changes to its nearest color )

My bad. Change one line to

 Const maxval As Integer = 255

I had it set t0 2 when I was testing. However, you won't get smooth transitions when you reset from 255 to 0. To get a smoother transition you can try

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

    Static x As Integer = 1, dx = 1
    Static y As Integer = 1, dy = 1
    Static z As Integer = 1, dz = 1
    Const maxval As Integer = 255

    If x > 0 And x < maxval Then
        x += dx
    ElseIf y > 0 And y < maxval Then
        dx = -dx : x += dx
        y += dy
    ElseIf z < maxval Then
        dx = -dx : x += dx
        dy = -dy : y += dy
        z += dz
    Else
        Timer1.Stop()
    End If

    BackColor = Color.FromArgb(x, y, z)

End Sub
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.