Atlanta Custom Software Development 

 
   Search        Code/Page
 

User Login
Email

Password

 

Forgot the Password?
Services
» Web Development
» Maintenance
» Data Integration/BI
» Information Management
Programming
  Database
Automation
OS/Networking
Graphics
Links
Tools
» Regular Expr Tester
» Free Tools

BackgroundCircularGradient - Paint a circular background gradient

Total Hit ( 3417)

Rate this article:     Poor     Excellent 

 Submit Your Question/Comment about this article

Rating


 


Click here to copy the following block
Private Declare Function RealizePalette Lib "gdi32" (ByVal hdc As Long) As Long

' Paint a circular gradient
'
' STARTCOLOR is the starting color (applied to the corner)
' ENDCOLOR is the ending color (applied to the center point)
' NUMSTEPS is the optional number of stripes (default is 256)
' XC, XY are the coordinates of the center (default is the center of the form)
'
' Example: a vertical gradient from blue to Black
'  BackgroundCircularGradient Me, &HFF0000, 0, , 500, 200

Sub BackgroundCircularGradient(frm As Form, ByVal startColor As Long, _
  ByVal endColor As Long, Optional ByVal numSteps As Integer = 256, _
  Optional ByVal xc As Single = -1, Optional ByVal yc As Single = -1)
  Dim startRed As Integer, startGreen As Integer, startBlue As Integer
  Dim deltaRed As Integer, deltaGreen As Integer, deltaBlue As Integer
  Dim r As Single, dr As Single
  Dim stp As Long
  
  Dim saveFillColor As Long
  Dim saveFillStyle As Long
  
  ' Evaluate the coordinates of the center if omitted.
  If xc = -1 And yc = -1 Then
    xc = frm.ScaleWidth / 2
    yc = frm.ScaleHeight / 2
  End If
  
  ' The radius of the circle is equal to the distance from the farthest corner
  If xc < frm.ScaleWidth / 2 Then
    If yc < frm.ScaleHeight / 2 Then
      r = Sqr((frm.ScaleWidth - xc) ^ 2 + (frm.ScaleHeight - yc) ^ 2)
    Else
      r = Sqr((frm.ScaleWidth - xc) ^ 2 + yc ^ 2)
    End If
  Else
    If yc < frm.ScaleHeight / 2 Then
      r = Sqr(xc ^ 2 + (frm.ScaleHeight - yc) ^ 2)
    Else
      r = Sqr(xc ^ 2 + yc ^ 2)
    End If
  End If
  
  ' 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 the delta of the radius at each step
  dr = r / numSteps
  
  ' Remember current fill settings.
  saveFillColor = Me.FillColor
  saveFillStyle = Me.FillStyle
  ' enfore solid filling
  Me.FillStyle = vbSolid
  
  ' Draw all circles, going from the outside in.
  For stp = 0 To numSteps - 1
    Me.FillColor = RGB(startRed + (deltaRed * stp) \ numSteps, _
      startGreen + (deltaGreen * stp) \ numSteps, _
      startBlue + (deltaBlue * stp) \ numSteps)
    frm.Circle (xc, yc), r, Me.FillColor
    r = r - dr
  Next
  
  ' Restore original settings.
  Me.FillColor = saveFillColor
  Me.FillStyle = saveFillStyle
End Sub


Submitted By : Nayan Patel  (Member Since : 5/26/2004 12:23:06 PM)

Job Description : He is the moderator of this site and currently working as an independent consultant. He works with VB.net/ASP.net, SQL Server and other MS technologies. He is MCSD.net, MCDBA and MCSE. In his free time he likes to watch funny movies and doing oil painting.
View all (893) submissions by this author  (Birth Date : 7/14/1981 )


Home   |  Comment   |  Contact Us   |  Privacy Policy   |  Terms & Conditions   |  BlogsZappySys

© 2008 BinaryWorld LLC. All rights reserved.