Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: VB5,VB6
Expertise: Intermediate
Oct 27, 2001

BackgroundVerticalGradient - Paint a vertical gradient background

Private Declare Function RealizePalette Lib "gdi32" (ByVal hdc As Long) As Long

' Paint a vertical gradient
'
' STARTCOLOR is the starting color (applied to top border)
' ENDCOLOR is the ending color (applied to bottom border)
' NUMSTEPS is the optional number of stripes (default is 256)
'
' Example: a vertical gradient from blue to Red
'   BackgroundVerticalGradient Form1, &HFF0000, &HFF

Sub BackgroundVerticalGradient(frm As Form, ByVal startColor As Long, _
    ByVal endColor As Long, Optional ByVal numSteps As Integer = 256)
    Dim startRed As Integer, startGreen As Integer, startBlue As Integer
    Dim deltaRed As Integer, deltaGreen As Integer, deltaBlue As Integer
    Dim y As Single, dy As Single
    Dim stp As Long
    
    ' Split the start color into its RGB components
    startRed = startColor And &HFF
    startGreen = (startColor And &HFF00&) \ 256
    startBlue = (startColor And &HFF0000) \ 65536
    ' Split the end color into its RGB components
    deltaRed = (endColor And &HFF&) - startRed
    deltaGreen = (endColor And &HFF00&) \ 256 - startGreen
    deltaBlue = (endColor And &HFF0000) \ 65536 - startBlue
    
    RealizePalette frm.hdc
    
    ' Eval width of each block
    dy = frm.ScaleHeight / numSteps
    
    For stp = 0 To numSteps - 1
        frm.Line (0, y)-(frm.ScaleWidth, y + dy), RGB(startRed + (deltaRed * _
            stp) \ numSteps, startGreen + (deltaGreen * stp) \ numSteps, _
            startBlue + (deltaBlue * stp) \ numSteps), BF
        y = y + dy
    Next
End Sub

Francesco Balena
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap