Hallo zusammen,
ich habe mal wieder ein Problem und hoffe auf Eure Unterstützung.
Und zwar färbe ich eine Form beim Laden oder beim ändern der Größe mit einem Farbverlauf ein.
Dies hat bisher auch gut funktioniert, doch jetzt haben wir neue Monitore, die sehr breit sind, und bei diesen werden die Fenster oft nur zur Hälfte (in der Breite) gefärbt.
Ich habe den Code vor einigen Jahre hier mal bekommen, da ich aber nichts von Grafischen Dingen verstehe, hoffe ich auf eure Hilfe.
So starte ich den Code:
Farbverlauf me hier mal der Code:
Public Sub Farbverlauf(Name As Object)
Dim FrmDraw As Boolean
Dim Beginn As Integer
Dim b As Integer, h As Integer
Dim X As Double, XX As Double
Dim AktuelleFarbe As Long
On Error GoTo err
FrmDraw = Name.AutoRedraw
Name.AutoRedraw = True
b = Name.ScaleWidth 'Breite
h = Name.ScaleHeight 'Höhe
Name.Cls
' Farbübergang
Select Case Richtung
' Horizontal; 0 Farbe1 -> Farbe2, ' 1 Farbe1 <- Farbe2
Case 1, 2
Beginn = 0
For X# = Beginn To 1 Step 0.01
XX# = X#
If Richtung = 1 Then
XX# = (1 - X#)
End If
AktuelleFarbe& = RGB(Farben(0).iRot - (Farben(0).iRot - Farben( _
1).iRot) * _
XX#, Farben(0).iGruen - (Farben(0).iGruen - Farben( _
1).iGruen) _
* XX#, Farben(0).iBlau - (Farben(0).iBlau - Farben( _
1).iBlau) _
* XX#)
Name.Line (X# * b, 0)-((X# + 0.01) * b, h), _
AktuelleFarbe&, BF
Next
' Vertikal; ' 2 Farbe1 -> Farbe2, 3 Farbe1 <- Farbe2
Case 3, 4
For X# = 0 To 1 Step 0.01
XX# = X#
If Richtung = 3 Then XX# = (1 - X#)
AktuelleFarbe& = RGB(Farben(0).iRot - (Farben(0).iRot - Farben( _
1).iRot) * XX#, _
Farben(0).iGruen - (Farben(0).iGruen - Farben( _
1).iGruen) * XX#, _
Farben(0).iBlau - (Farben(0).iBlau - Farben( _
1).iBlau) * XX#)
Name.Line (0, X# * h)-(b, (X# + 0.01) * h), _
AktuelleFarbe&, BF
Next
End Select
Name.AutoRedraw = FrmDraw ' Zurücksetzen
Exit Sub
err:
End Sub Danke und Gruß Ingo
Wer aufhört sich zu verbessern, hört auf gut zu sein. |