|
Tipp 0517
|
3D-Schatten für Steuerelemente
|
|
|
Autor/Einsender: Datum: |
|
Detlev Schubert 04.10.2006 |
|
Entwicklungsumgebung: |
|
VB 6 |
|
|
Die meisten Steuerelemente besitzen die Appearance-Eigenschaft für die 3D-Darstellung, die sie plastisch erscheinen lassen. Um jedoch einen
3D-Effekt zu erzeugen, ist es notwendig einen Schatten hinter ein Objekt zu zeichnen. Der Betrachter erhält damit den Eindruck das das Objekt
über dem Untergrund schwebt.
|
Damit eine Schrift im Hintergrund nicht verschwindet und so ein echter Schatten entsteht, wenden wir einen einfachen Trick an. Vor dem Zeichnen
des Schattens wird die DrawMode-Eigenschaft auf den Wert 6 gesetzt. So ist es auch möglich, dass nach einem wiederholten Klick
auf den Command-Button der Schatten einfach wieder verschwindet.
|
|
|
Option Explicit
Private Sub Form_Load()
Dim IntI As Integer
Text1.Text = "Linker Mausklick auf Form - > Schrift" & vbCrLf & _
"Rechter Mausklick - > keine Schrift"
For IntI = 1 To 8
Combo1.AddItem Trim$(Str$(IntI))
List1.AddItem "Eintrag" & Str$(IntI)
Next
Combo1.ListIndex = 3
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
If Button = 1 Then
FillWithText " 3D-Schatten "
Else
Me.Cls
End If
If Combo1.Enabled = False Then Combo1.Enabled = True
End Sub
Private Sub Command2_Click()
Dim Ctrl As Control
For Each Ctrl In Controls
If Ctrl <> Label2 Then
Make_3DSchatten Me, Ctrl, Val(Combo1.Text)
End If
Next
Combo1.Enabled = Combo1.Enabled Xor -1
End Sub
Sub Make_3DSchatten(BackObj As Object, Ctrl As Control, _
SchattenBreite As Integer)
Dim intF As Integer
Dim SCM As Integer
Dim MerkMode As Integer
Dim MerkRedraw As Boolean
If SchattenBreite = 0 Then Exit Sub
With BackObj
MerkMode = .DrawMode
SCM = .ScaleMode
MerkRedraw = .AutoRedraw
.ScaleMode = 3
.AutoRedraw = True
intF = SchattenBreite > 0
.DrawMode = 6
BackObj.Line (Ctrl.Left + SchattenBreite, Ctrl.Top + _
SchattenBreite)-(Ctrl.Left + Ctrl.Width + _
SchattenBreite, Ctrl.Top + Ctrl.Height + _
SchattenBreite), , BF
.DrawMode = MerkMode
.ScaleMode = SCM
.AutoRedraw = MerkRedraw
End With
End Sub
Sub FillWithText(strTxt As String)
Dim lngM As Long
Dim lngN As Long
Cls
Font.Size = 12
ForeColor = vbRed
For lngM = 0 To Me.ScaleHeight
For lngN = 0 To Me.ScaleWidth Step TextWidth(strTxt)
Print strTxt;
Next
Print ""
Next
ForeColor = &H80000000
End Sub
|
|
|
|
|
Windows-Version |
95 |
|
|
98 |
|
|
ME |
|
|
NT |
|
|
2000 |
|
|
XP |
|
|
Vista |
|
|
Win
7 |
|
|
|
VB-Version |
VBA 5 |
|
|
VBA 6 |
|
|
VB 4/16 |
|
|
VB 4/32 |
|
|
VB 5 |
|
|
VB 6 |
|
|
|
|
Download (3,1
kB)
|
Downloads bisher: [ 573 ]
|
|
|