Include - Farbanpassungen (Helligkeit, Kontrast, Graustufen)
Verfasst: 15.08.2008 16:00
Tachchen,
möchte euch hier meine Farbanpassungsproceduren zur Verfügung stellen.
Sie ermöglichen einfache Farbveränderungen die für verschiedene Gebiete gebraucht werden: Bilder, eigene 3D-Buttons, usw.
Derzeitige Proceduren:
ColorHex, ColorDec
ColorMix
ColorBrightness
ColorIntensity
ColorContrast
ColorGamma
ColorInverse
ColorGray
Beispielbild:

Falls es Probleme mit einigen Proceduren gibt, oder eurer Meinung nach die Parameter einen anderen "Bereich" haben sollte, dann bitte ich euch das zu schreiben.
möchte euch hier meine Farbanpassungsproceduren zur Verfügung stellen.
Sie ermöglichen einfache Farbveränderungen die für verschiedene Gebiete gebraucht werden: Bilder, eigene 3D-Buttons, usw.
Derzeitige Proceduren:
ColorHex, ColorDec
ColorMix
ColorBrightness
ColorIntensity
ColorContrast
ColorGamma
ColorInverse
ColorGray
Beispielbild:
Falls es Probleme mit einigen Proceduren gibt, oder eurer Meinung nach die Parameter einen anderen "Bereich" haben sollte, dann bitte ich euch das zu schreiben.
Code: Alles auswählen
; Korrigiert einen zu kleinen oder zu großen Wert für einen Farbwert
Procedure Real255(Wert)
If Wert < 0
ProcedureReturn 0
ElseIf Wert > 255
ProcedureReturn 255
Else
ProcedureReturn Wert
EndIf
EndProcedure
; Gibt die (Dec-)Farbe als eine (Hex-)Farbe aus (immer 6-stellig)
Procedure.s ColorHex(Color.l)
ProcedureReturn RSet(Hex(Color), 6, "0")
EndProcedure
; Gibt die (Hex-)Farbe als eine (Dec-)Farbe aus
Procedure ColorDec(Color$)
Protected n, Color, Asc
For n = 1 To Len(Color$)
Color * 16
Asc = Asc(Mid(UCase(Color$), n, 1))
Select Asc
Case '0' To '9'
Color + (Asc-'0')
Case 'A' To 'F'
Color + (Asc-'A'+10)
EndSelect
Next
ProcedureReturn Color
EndProcedure
; Mischt zwei Farben
; MixFactor = -1.0 -> 100% Farbe1 , 0% Farbe2
; MixFactor = ±0.0 -> 50% Farbe1 , 50% Farbe2
; MixFactor = +1.0 -> 0% Farbe1 , 100% Farbe2
Procedure ColorMix(Color1, Color2, MixFactor.f=0, Flags=0)
Protected R, G, B, P.f, P1.f, P2.f
Select Flags
Case 0
P2 = (MixFactor+1)/2
P1 = 1 - P2
R = Red(Color1)*P1 + Red(Color2)*P2
G = Green(Color1)*P1 + Green(Color2)*P2
B = Blue(Color1)*P1 + Blue(Color2)*P2
ProcedureReturn RGB(R,G,B)
Case 1
If MixFactor < 0
P = (MixFactor+1)
R = Real255( Red(Color1) + Red(Color2)*P )
G = Real255( Green(Color1) + Green(Color2)*P )
B = Real255( Blue(Color1) + Blue(Color2)*P )
Else
P = (1-MixFactor)
R = Real255( Red(Color2) + Red(Color1)*P )
G = Real255( Green(Color2) + Green(Color1)*P )
B = Real255( Blue(Color2) + Blue(Color1)*P )
EndIf
ProcedureReturn RGB(R,G,B)
EndSelect
EndProcedure
; Verändert die Helligkeit einer Farbe
; Brightness = -1.0 -> dunkel (schwarz)
; Brightness = ±0.0 -> normal
; Brightness = +1.0 -> hell (weiß)
Procedure ColorBrightness(Color, Brightness.f, Flags=0)
Protected R, G, B, RGB
Select Flags
Case 0
R = Real255( Red(Color) + Brightness*255 )
G = Real255( Green(Color) + Brightness*255 )
B = Real255( Blue(Color) + Brightness*255 )
ProcedureReturn RGB(R,G,B)
Case 1
If Brightness < 0
R = Real255( Red(Color) * (1+Brightness) )
G = Real255( Green(Color) * (1+Brightness) )
B = Real255( Blue(Color) * (1+Brightness) )
Else
R = Brightness*255 + Red(Color) * (1-Brightness)
G = Brightness*255 + Green(Color) * (1-Brightness)
B = Brightness*255 + Blue(Color) * (1-Brightness)
EndIf
ProcedureReturn RGB(R,G,B)
Case 2
RGB = ColorMix(ColorBrightness(Color, Brightness, 0), ColorBrightness(Color, Brightness, 1))
ProcedureReturn RGB
EndSelect
EndProcedure
; Verändert die Intensität einer Farbe
; Intensity = 0.0 -> keine Intensität (schwarz)
; Intensity = 1.0 -> normale Intensität
; Intensity = 2.0 -> höhere Intensität
Procedure ColorIntensity(Color, Intensity.f)
Protected R, G, B
R = Real255( Red(Color) * Intensity )
G = Real255( Green(Color) * Intensity )
B = Real255( Blue(Color) * Intensity )
ProcedureReturn RGB(R,G,B)
EndProcedure
; Verändert den Kontrast einer Farbe
; Contrast = -1.0 -> kein Kotrast (grau)
; Contrast = ±0.0 -> normaler Kotrast
; Contrast = +1.0 -> hoher Kontast
Procedure ColorContrast(Color, Contrast.f)
Protected R, G, B
R = Real255( Red(Color) + ( Red(Color)-128) * Contrast )
G = Real255( Green(Color) + (Green(Color)-128) * Contrast )
B = Real255( Blue(Color) + ( Blue(Color)-128) * Contrast )
ProcedureReturn RGB(R,G,B)
EndProcedure
; Verändert den Gamma-Wert einer Farbe
; Gamma < 1.0 -> dunkeler
; Gamma = 1.0 -> keine Änderung
; Gamma > 1.0 -> heller
Procedure ColorGamma(Color, Gamma.f)
Protected R, G, B
R = Real255( Pow( Red(Color)/255 , 1/Gamma ) * 255 )
G = Real255( Pow( Green(Color)/255 , 1/Gamma ) * 255 )
B = Real255( Pow( Blue(Color)/255 , 1/Gamma ) * 255 )
ProcedureReturn RGB(R,G,B)
EndProcedure
; Gibt die Graufarbe einer Farbe zurück
; Intensity = 0.0 -> Farbig
; Intensity = 1.0 -> Grau
; GrayColor : Graufarbe die erreich werden soll (RGB-Farbe)
Procedure ColorGray(Color, Intensity.f, GrayColor=$FFFFFF)
Protected R, G, B, Gray.f
#GrayColorFactorRed = 0.299
#GrayColorFactorGreen = 0.587
#GrayColorFactorBlue = 0.114
Gray = #GrayColorFactorRed*Red(Color) + #GrayColorFactorGreen*Green(Color) + #GrayColorFactorBlue*Blue(Color)
R = Red(GrayColor) * Gray/255*Intensity + Red(Color) * (1-Intensity)
G = Green(GrayColor) * Gray/255*Intensity + Green(Color) * (1-Intensity)
B = Blue(GrayColor) * Gray/255*Intensity + Blue(Color) * (1-Intensity)
ProcedureReturn RGB(R,G,B)
EndProcedure
; Invertierung einer Farbe
; Factor = 0.0 -> normal Farben
; Factor = 1.0 -> inverse Farben
Procedure ColorInverse(Color, Factor.f=1)
Protected R, G, B
If Factor = 1
ProcedureReturn Color ! $FFFFFF
Else
ProcedureReturn ColorMix(Color, Color ! $FFFFFF, Factor*2-1)
EndIf
EndProcedure