Offset3D




Sub MakeIt3D (Ctrl As Control, nBevel%, nSpace%, bInset%)

'Makes the passed control appear 3D.


'Looks best when background of form or container is light gray.

'Parameters:

' Ctrl = apply 3D look to control name

' nBevel% = bevel width (pixels)

' nSpace% = surround distance from control (pixels)

' bInset% = True is 3D inset border

' False is 3D outset border

PixX% = Screen.TwipsPerPixelX
PixY% = Screen.TwipsPerPixelY
CTop% = Ctrl.Top - PixX%
CLft% = Ctrl.Left - PixY%
CRgt% = Ctrl.Left + Ctrl.Width
CBtm% = Ctrl.Top + Ctrl.Height
' Color used below:

' dark gray = &H808080

' white = &HFFFFFF

If bInset% Then 'recessed border
For i% = nSpace% To (nBevel% + nSpace% - 1)
AddX% = i% * PixX%
AddY% = i% * PixY%
Ctrl.Parent.Line (CLft% - AddX%, CTop% - AddY%)- _
(CRgt% + AddX%, CTop% - AddY%),
&H808080
Ctrl.Parent.Line (CLft% - AddX%, CTop% - AddY%)- _
(CLft% - AddX%, CBtm% + AddY%),
&H808080
Ctrl.Parent.Line (CLft% - AddX%, CBtm% + AddY%)- _
(CRgt% + AddX% + PixX%, CBtm% +
AddY%), &HFFFFFF
Ctrl.Parent.Line (CRgt% + AddX%, CTop% - AddY%)- _
(CRgt% + AddX%, CBtm% + AddY%),
&HFFFFFF
Next
Else 'raised border
For i% = nSpace% To (nBevel% + nSpace% - 1)
AddX% = i% * PixX%
AddY% = i% * PixY%
Ctrl.Parent.Line (CRgt% + AddX%, CBtm% + AddY%)- _
(CRgt% + AddX%, CTop% - AddY%),
&H808080
Ctrl.Parent.Line (CRgt% + AddX%, CBtm% + AddY%)- _
(CLft% - AddX%, CBtm% + AddY%),
&H808080
Ctrl.Parent.Line (CRgt% + AddX%, CTop% - AddY%)- _
(CLft% - AddX% - PixX%, CTop% -
AddY%), &HFFFFFF
Ctrl.Parent.Line (CLft% - AddX%, CBtm% + AddY%)- _
(CLft% - AddX%, CTop% - AddY%),
&HFFFFFF
Next
End If
End Sub

'Example:

'In the form's Paint event:

MakeIt3D Text1, 1, 0, True










( offset3d.html )- by Paolo Puglisi - Modifica del 17/12/2023