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
 
Weitere Links zum Thema
3D Landkarten mit Regions

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: [ 492 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Projekte | Tutorials | API-Referenz | VB-/VBA-Tipps | Komponenten | Bücherecke | VB/VBA-Forum | VB.Net-Forum | DirectX-Forum | Foren-Archiv | DirectX | VB.Net-Tipps | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Mittwoch, 8. Juni 2011