![]() |
"Farbverlauf" von clBtnFace zu clBlack
Hallo DP,
ich habe zwei Farben. Zum einem clBtnFace und dann clBlack. Nun will ich ein Farbverlauf zwischen den Punkten machen. Also dachte ich mir: clBtnFace / 8 (8 Abstufungen) fertig. Denkste. Selbst mit RGB(GetRValue(clBtnFace) div 8 ...) wird das nichts. Nun was macht man da ? MfG xZise |
Re: "Farbverlauf" von clBtnFace zu clBlack
du musst die Farbe in ihre Bestandteile zerlegen (rot, grün, blau). Anschließend kannst du den Mittelwert der Farben gewichtet berechnen.
|
Re: "Farbverlauf" von clBtnFace zu clBlack
Ich hab in der CL das da gefunden, vll. hilft dir das weiter:
![]() Bin jetzt aber auch müde :drunken: , also Gute Nacht ;) |
Re: "Farbverlauf" von clBtnFace zu clBlack
Also ich würds so machen:
Delphi-Quellcode:
Ungetestet, sollte aber funktionieren. Anmerkung: Das ganze fängt bei Step=0 an.
function GetGradientColor(const Color1, Color2: TColor; const Step, Steps: Cardinal): TColor;
begin Result:=(Color1 and $FF)*(Steps-Step-1) div (Steps-1)+(Color2 and $FF)*Step div (Steps-1); Result:=Result or ((Color1 and $FF00)*(Steps-Step-1) div (Steps-1)+(Color2 and $FF00)*Step div (Steps-1)); Result:=Result or ((Color1 and $FF0000)*(Steps-Step-1) div (Steps-1)+(Color2 and $FF0000)*Step div (Steps-1)); end; |
Re: "Farbverlauf" von clBtnFace zu clBlack
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Delphi-Quellcode:
Da wir ja zum Schwarz gehen, müssen wir jede Farbe mit 0 subtrahieren ;)
FColorStep := clBtnFace;
RGB(GetRValue(FColorStep) div 8, GetGValue(FColorStep) div 8, GetBValue(FColorStep) div 8); Deshalb habe ich es gelassen. Ergebnis: "1" @ Borg: Ich habe mal ein Beispiel angehangen ;) Schau mir den Code aber mal an! Und muss das nicht shl 1 sein? Einfach ein Byte weiter schieben. Aber das nützt auch nichts. CL: Noch nicht getestet. Zur Farbe: Die ist negativ! (Das ist wahrscheinlich auch das Problem) MfG xZise |
Re: "Farbverlauf" von clBtnFace zu clBlack
Ach was hab ich denn da gemacht? Also, wenn dann wäre es shl 8 bzw. 16. Aber eigentlich kann man das ganze geshifte auch gleich weglassen.
|
Re: "Farbverlauf" von clBtnFace zu clBlack
Eine Frage: Was machst du da? ^^
Wenn du "AB CD EF" als Farbe hast, und du dann dass Binär verknüpfst:
Delphi-Quellcode:
Oder habe ich da Fehler gemacht?
AB CD EF
and 00 00 FF == == == 54 32 EF Zum Test Binär:
Delphi-Quellcode:
MfG
1010 1011 1100 1101 1110 1111
and 0000 0000 0000 0000 1111 1111 ==== ==== ==== ==== ==== ==== 0101 0100 0011 0010 1110 1111 xZise |
Re: "Farbverlauf" von clBtnFace zu clBlack
Verwechselst du da etwa ein and mit einem xor?
Irgendetwas and 0 ist immer 0. Mit dem and $FF hau ich z.B. alles außer rot aus dem Farbwert raus, sodass ich nur das rot multipliziere. |
Re: "Farbverlauf" von clBtnFace zu clBlack
Okay da habe ich mist gebaut.
Aber irgendwas stimmt da nicht:
Delphi-Quellcode:
GetGradientColor(clBtnFace, clBlack, i, 8) => clBlack
|
Re: "Farbverlauf" von clBtnFace zu clBlack
Bevor ihr hier noch stundenlang rätselt: Alle clMenuColor, etc sind keine RGB Werte sondern sind Konstanten mit einem Index drin, welcher dann über die Systemfarben ermittelt wird durch die VCL von Windows. Um die RGB Werte für diese Konstanten zu bekommen, vorher
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz