|
Erinnern Sie sich noch an Ihre Schulzeit, vielleicht sogar noch an den Kunst-, Mathematik- oder an den Geschichtsunterricht? Wenn ja, dann werden Sie sich vielleicht auch noch an den "Goldenen Schnitt" erinnern, und an die antiken Griechen, die die Grundflächen Ihrer Tempel dem "Goldenen Rechteck" angepasst hatten. Für die damaligen Philosophen, meistens auch Mathematiker in einer Person, war die Proportion des Goldenen Schnitts der Inbegriff der Harmonie für das menschliche Auge. Und auch heute noch, im Computerzeitalter, ist diese Vorstellung fest in uns verankert, etwa in Bezug auf Kunst, Architektur und unsere Schönheitsideale, nicht aber - so scheint es zumindest - in Bezug auf die Software-"Architektur". Doch das lässt sich ändern.
Das Verhältnis zwischen Breite und Höhe ist in einem Goldenen Rechteck wie folgt definiert:
a / b = (1+ 5 ^ (1 / 2)) / 2
Diese Gleichung können wir sowohl nach a oder b auflösen und erhalten somit zwei einparametrische Funktionen:
Public Function GoldenHeight(ByVal Width As Single) As Single
GoldenHeight = (2 * Width) / (1 + 5 ^ (1 / 2))
End Function
Public Function GoldenWidth(ByVal Height As Single) As Single
GoldenWidth = Height * (1 + 5 ^ (1 / 2)) / 2
End Function
Sie können nun ganz einfach einem rechteckigen Objekt, etwa ein Form, ausgehend von einer gegebenen Breite oder einer gegebnen Höhe, "golden geschnittene" Abmessungen verleihen - der Einfachheit halber und ei immer in eine Hilfsprozedur verpackt:
Public Enum GoldenSectionConstants
gsByWidth
gsByHeight
End Enum
Public Sub AdjustGolden(Object As Object, _
Optional ByVal Base As GoldenSectionConstants = gsByWidth)
Dim nWidth As Single
Dim nHeight As Single
With Object
Select Case Base
Case gsByWidth
nWidth = .Width
nHeight = GoldenHeight(nWidth)
Case gsByHeight
nHeight = .Height
nWidth = GoldenHeight(nHeight)
End Select
.Move .Left, .Top, nWidth, nHeight
End With
End Sub
Ein Form "vergolden" Sie beispielsweise in seinem Resize-Ereignis so:
Private Sub Form_Resize()
AdjustGolden Me, gsByWidth
End Sub
|