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


Click here to copy the following block
Private Type POINTAPI
  x As Long
  Y As Long
End Type

Private Declare Function SetPixel& Lib "gdi32" (ByVal hDC As Long, _
  ByVal x As Long, ByVal Y As Long, ByVal crColor As Long)
Private Declare Function LineTo& Lib "gdi32" (ByVal hDC As Long, _
  ByVal x As Long, ByVal Y As Long)
Private Declare Function MoveToEx Lib "gdi32" (ByVal hDC As Long, _
  ByVal x As Long, ByVal Y As Long, lpPoint As POINTAPI) As Long

' Create a form with a 3D gradient frame
'
' Pass this a borderless form
' You get better results with AutoRedraw set to TRUE
' and with HiLiteCol and ShadowCol "close" to the
' form's BackColor
'
' It draws a series of lines around the form
' starting on the outside and moving one pixel inward with each line
' the number of lines is determined by the "Steps" value that is passed.
' The Left and Top use the "HiliteCol" value
' the Right and Bottom use the "ShadowCol" value.
' Swap them to get a sunken effect

' Call this routine from within Form_Load, as in:
'  Sub Form_Load()
'    Const MyBackgroundColor = 16119262
'    Const MyShadowColor = 14474381
'    Const MyHiLiteColor = 15329769
'    Me.BackColor = MyBackgroundColor
'    DrawHighliteGradientFrame Me, MyHiLiteColor, MyShadowColor, 7
'  End Sub


Sub DrawHighliteGradientFrame(FormIn As Form, ByVal HiLiteCol As Long, _
  ByVal ShadowCol As Long, ByVal Steps As Integer)
  ' exit if the form is minimized
  If FormIn.WindowState = vbMinimized Then Exit Sub
   
  Dim InnerCol As Long
  Dim R_Inner As Long, G_Inner As Long, B_Inner As Long
  Dim R_HiLite As Long, G_HiLite As Long, B_HiLite As Long
  Dim R_Shadow As Long, G_Shadow As Long, B_Shadow As Long
  Dim R_HiLiteIncr As Single, G_HiLiteIncr As Single, B_HiLiteIncr As Single,
  Dim R_HiLiteCur As Single, G_HiLiteCur As Single, B_HiLiteCur As Single
  Dim R_ShadowIncr As Single, G_ShadowIncr As Single, B_ShadowIncr As Single,
  Dim R_ShadowCur As Single, G_ShadowCur As Single, B_ShadowCur As Single
  Dim sTemp As String, i As Integer, WD As Long, HT As Long, DC As Long
  Dim pos As Integer, LP As POINTAPI, LongVal As Long
  Dim oldScaleMode As Integer, oldForeColor As Long
  
  ' switch to pixel scalemode
  oldForeColor = FormIn.ForeColor
  oldScaleMode = FormIn.ScaleMode
  FormIn.ScaleMode = vbPixels
  
  'Set the form width, height & DC
  With FormIn
    WD = .ScaleWidth - 1
    HT = .ScaleHeight - 1
    DC = .hDC
  End With
  
  'convert the hilite color from long to RGB
  R_HiLite = (HiLiteCol And &HFF&)
  G_HiLite = (HiLiteCol And &HFF00&) / &H100&
  B_HiLite = (HiLiteCol And &HFF0000) / &H10000
  
  'convert the shadow color from long to RGB
  R_Shadow = (ShadowCol And &HFF&)
  G_Shadow = (ShadowCol And &HFF00&) / &H100&
  B_Shadow = (ShadowCol And &HFF0000) / &H10000
  
  'convert the inner color from long to RGB
  InnerCol = FormIn.BackColor
  R_Inner = (InnerCol And &HFF&)
  G_Inner = (InnerCol And &HFF00&) / &H100&
  B_Inner = (InnerCol And &HFF0000) / &H10000
    
  'set the increments
  R_HiLiteIncr = (R_HiLite - R_Inner) / Steps
  G_HiLiteIncr = (G_HiLite - G_Inner) / Steps
  B_HiLiteIncr = (B_HiLite - B_Inner) / Steps
  R_ShadowIncr = (R_Shadow - R_Inner) / Steps
  G_ShadowIncr = (G_Shadow - G_Inner) / Steps
  B_ShadowIncr = (B_Shadow - B_Inner) / Steps
  
  'initialize the current colors
  R_HiLiteCur = R_HiLite
  G_HiLiteCur = G_HiLite
  B_HiLiteCur = B_HiLite
  R_ShadowCur = R_Shadow
  G_ShadowCur = G_Shadow
  B_ShadowCur = B_Shadow
  
  With FormIn
    For i = 0 To Steps - 1
      'draw clockwise from bottom / left
      
      'Use hilite color
      'Round the RGB vals to integers and convert to a long color value
      LongVal = (Int(B_HiLiteCur) * 65536) + (Int(G_HiLiteCur) * 256) + _
        Int(R_HiLiteCur)
      
      'set the drawing color
      .ForeColor = LongVal
      
      'Draw the left and top
      MoveToEx DC, i, HT - i, LP    'left
      LineTo DC, i, i
      MoveToEx DC, i, i, LP       'top
      LineTo DC, WD - i, i
      
      'Use shadow color
      'Round the RGB vals to integers and convert to a long color value
      LongVal = (Int(B_ShadowCur) * 65536) + (Int(G_ShadowCur) * 256) + _
        Int(R_ShadowCur)
      
      'set the drawing color
      .ForeColor = LongVal
      
      'Draw the right and bottom
      MoveToEx DC, WD - i, i, LP    'right
      LineTo DC, WD - i, HT - i
      MoveToEx DC, WD - i, HT - i, LP 'bottom
      LineTo DC, i, HT - i
      
      'increment the colors
      R_HiLiteCur = R_HiLiteCur - R_HiLiteIncr
      G_HiLiteCur = G_HiLiteCur - G_HiLiteIncr
      B_HiLiteCur = B_HiLiteCur - B_HiLiteIncr
      R_ShadowCur = R_ShadowCur - R_ShadowIncr
      G_ShadowCur = G_ShadowCur - G_ShadowIncr
      B_ShadowCur = B_ShadowCur - B_ShadowIncr
    Next
 
    .Refresh
  End With

  ' restore original values
  FormIn.ForeColor = oldForeColor
  FormIn.ScaleMode = oldScaleMode

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.