Autor Beitrag
JRegier
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Di 26.07.05 18:07 
Hi, kennt jemand ein besseren Algorithmus mit dem man einige Farben im bestimmten Helligkeitsbereich
erzeugen kann? Ich habe hiermit versucht und es sind alles Graue Farben! Ich möchte eigentlich eine
schön bunt gemischte Pallete haben!

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
var FColor array[0..25or TColor;

procedure TDBBuilderFrame.InitColorArray;
var  I, R, G, B : Integer;
begin
    R := 150;
    G := 150;
    B := 150;
    I := 0;
    while R <= 200 do
    begin
        while G <= 200 do
        begin
            while B <= 200 do
            begin
            FColor[I] := RGB(R, G, B);
            Inc(I);
            Inc(B, 2);
            end;
        Inc(G,2);
        end;
    Inc(R, 2);
    end;
end;
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Di 26.07.05 18:39 
Richtig gut kommentiert der Code :gruebel: Was soll der machen? Farben erzeugen? Nach welchen Kriterien (was verstehst du unter einem "Helligkeitsbereich")? Dass du nur Grautöne erhältst, ist klar: R, B und G haben immer den gleichen Wert -> Graustufenpallette.

AXMD
DaRkFiRe
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 526

WinXP Home & Professional
C, C++, Delphi
BeitragVerfasst: Di 26.07.05 19:13 
Schau dir das HSL Farbmodell an...

Ach übrigens:

"...or TColor"???

_________________
Lang ist der Weg durch Lehren - kurz und wirksam durch Beispiele! Seneca
JRegier Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Di 02.08.05 08:17 
Hey Jungs hier so sieht der Code jetzt aus:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
procedure TColorMan.CreateManyColors(const Value: Integer);
const Senken = 1;
      Steigen = 2;
      Stehen = 3;
      UGrenz = 15;
      OGrenz = 240;
var R, G, B, C, I : Integer;
    RT, GT, BT : Byte;
    R0, R1, G0, G1, B0, B1 : Boolean;
begin
   FColorCount := Value;
   SetLength(FColors, Value);

   R := OGrenz;
   G := UGrenz;
   B := UGrenz;
   RT := Senken;
   GT := Steigen;
   BT := Stehen;

   C := ((OGrenz - UGrenz) div (Value-1)) * 5;
   for I := 0 to Value - 1 do
   begin
   FColors[I] := RGB(R, G, B);

   case RT of
   Senken:   Dec(R, C);
   Steigen:  Inc(R, C);
   Stehen:   GT := Senken;
   end;

   case GT of
   Senken:  Dec(G, C);
   Steigen: Inc(G, C);
   Stehen:
   end;

   case BT of
   Senken: Dec(B, C);
   Steigen: Inc(B, C);
   Stehen:
   end;

   R1 := R >= OGrenz;
   R0 := R <= UGrenz;

   G1 := G >= OGrenz;
   G0 := G <= UGrenz;

   B1 := B >= OGrenz;
   B0 := B <= UGrenz;

   if(R0) and (G1) and (B0)then
   begin
   RT := Steigen;
   GT := Stehen;
   BT := Stehen;
   end;

   if(R1) and (G1) and (B0)then
   begin
   RT := Stehen;
   GT := Senken;
   BT := Steigen;
   end;

   if(R1) and (G0) and (B1)then
   begin
   RT := Senken;
   GT := Stehen;
   BT := Stehen;
   end;

   if(R0) and (G0) and (B1)then
   begin
   RT := Stehen;
   GT := Steigen;
   BT := Senken;
   end;

   end;
end;


Vieleicht hätte einer die Idee wie man das hier noch verbessern könnte?
Da sind nämlich zu viele Grüntöne hintereinander!

Im Anhang könnt Ihr sehen welche Farben es erzeugt!
Einloggen, um Attachments anzusehen!
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Di 02.08.05 08:41 
Verrate uns erstmal was die Prozedur machen soll. Soll di9e eine Fareb aufhellen? Oder was sonst? Solange wir die Infos nicht haben können wir dir nicht helfen.
JRegier Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Di 02.08.05 09:23 
user profile iconHeiko hat folgendes geschrieben:
Verrate uns erstmal was die Prozedur machen soll. Soll di9e eine Fareb aufhellen? Oder was sonst? Solange wir die Infos nicht haben können wir dir nicht helfen.


Eine bunte Farbpalette erzeugen die gut sichtbar sind auf Weiß in meinem Falle!

Also kurz gesagt die Farben die Ihr sehen könnt die werden mit dieser procedur
ertzeugt un im array der größe die ich der procedure als parameter übergebe
abgelegt!

Also mein Algorithmus gibt zu viele Grüntöne an einer stelle aus, wenn Ihr
ne Idee habt wie ich noch mehr bunte Farben da rausbekomme? Ich denke das
Spektrum ist doch größer?

Also ich habe zuerst Rot mit 240 initialisiert, grün und blau mit 15 dann
übergebe ich der procedur die anzahl der Farben die erzeugt werden sollen
das wird dann in Schritte aufgeteilt mit denen die Farben als Binärcode
abgebildet die Farben nacheinander runter und hochgefahren werden um
alle Bitcombinationen zu bekommen! Wie mein Code schon aussagt
R0, R1, G0, G1, B0, B1;
LigH
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 239

Win98SE, Win2000SP4
D7
BeitragVerfasst: Di 02.08.05 21:49 
Der Ausdruck "bunt" ist nicht gerade einer von den Worten, die sich klar und eindeutig definieren lassen. Was du meinst, ist sicherlich, dass du gern verschiedene kräftige, satte Farben in deiner Palette haben möchtest.

Wie DaRkFiRe schon sagte: Das HLS-Farbmodell ist dafür ein sehr guter Ansatz: Man wähle eine hohe Sättigung (S = Saturation), eine mittlere Helligkeit (L = Luminance), und lasse den Farbton (H = Hue) verändern. Eigentlich ist das ein Farbkreis zwischen 0° und 360°, aber weil das über den Wertebereich von "Byte" hinausgeht, werden Werte zwischen 0 und 240 zugelassen, also eine Skalierung von 2/3.

H = 0: rot
H = 40: gelb
H = 80: grün
H = 120: blaugrün
H = 160: blau
H = 200: violett
H = 240: rot

Und dafür gibt es die "function ColorHLSToRGB(Hue, Luminance, Saturation: Word): TColorRef;" in der Unit "GraphUtil".

Viel Spaß!
JRegier Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Mi 03.08.05 09:29 
user profile iconLigH hat folgendes geschrieben:
Der Ausdruck "bunt" ist nicht gerade einer von den Worten, die sich klar und eindeutig definieren lassen. Was du meinst, ist sicherlich, dass du gern verschiedene kräftige, satte Farben in deiner Palette haben möchtest.

Wie DaRkFiRe schon sagte: Das HLS-Farbmodell ist dafür ein sehr guter Ansatz: Man wähle eine hohe Sättigung (S = Saturation), eine mittlere Helligkeit (L = Luminance), und lasse den Farbton (H = Hue) verändern. Eigentlich ist das ein Farbkreis zwischen 0° und 360°, aber weil das über den Wertebereich von "Byte" hinausgeht, werden Werte zwischen 0 und 240 zugelassen, also eine Skalierung von 2/3.

H = 0: rot
H = 40: gelb
H = 80: grün
H = 120: blaugrün
H = 160: blau
H = 200: violett
H = 240: rot

Und dafür gibt es die "function ColorHLSToRGB(Hue, Luminance, Saturation: Word): TColorRef;" in der Unit "GraphUtil".

Viel Spaß!


Hey Junior-Member und mehr Ahnung als ich? Klasse! :wink: Aber in Wircklichkeit wahrscheinlich kein Junior-Member! Hmm...
Vielen Dank :!:
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mi 03.08.05 09:59 
[OT] Es soll ja Leute geben, die haben sich schon vor ihrem Beitritt ins Delphi-Forum mit diversen Dingen beschäftigt, die mit Programmieren zu tun haben. Die Anzahl der Beiträge sagt also nicht unbedingt etwas über den Wissensstand des Verfassers ab.
Aber das ändert sich ja sowieso bald :mrgreen:
[/OT]

_________________
We are, we were and will not be.
LigH
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 239

Win98SE, Win2000SP4
D7
BeitragVerfasst: Mi 03.08.05 12:05 
Na ja - Dipl.-Inform. (FH), zwischendurch auch schon mal Software-Entwickler gewesen. Wird heute aber immer schwerer, noch was zu finden, wenn man nicht wirklich alles kann. Und man wird teilweise nur noch ausgenutzt: Zuletzt war ich (zumindest was den Code angeht) fast ein 1-Mann-Team, 50-Stunden-Woche ohne Überstunden-Ausgleich, und trotzdem der "Chef" immer unzufrieden. So siehste mit 30 schon ganz alt aus...
JRegier Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Mi 03.08.05 12:34 
user profile iconLigH hat folgendes geschrieben:
Na ja - Dipl.-Inform. (FH), zwischendurch auch schon mal Software-Entwickler gewesen. Wird heute aber immer schwerer, noch was zu finden, wenn man nicht wirklich alles kann. Und man wird teilweise nur noch ausgenutzt: Zuletzt war ich (zumindest was den Code angeht) fast ein 1-Mann-Team, 50-Stunden-Woche ohne Überstunden-Ausgleich, und trotzdem der "Chef" immer unzufrieden. So siehste mit 30 schon ganz alt aus...


Was ist wenn du z.B. gute Ideen hast und die privat umsetzen kannst, demzufolge auch gut verkaufen kannst (alles eine Frage einer guten Idee)
und aber nicht das Risiko eingehen willst sich in die Selbständigkeit stürzen! Suchst also einen Chef der dich als sozusagen Subunternehmer
einstellt (weil er ja nur Vorteile dadurch hät und etwas dazuverdienen kann) der Chef übernimmt für dich dann die Rentenbeiträge
(apropo Rentenversicherung es heist zwar ...versicherung aber ist es nicht! Ist nur ein Rentenbeitrag in dem Sinne "aber darüber kann man ja
in einem anderen Thread diskutieren) und Krankenversicherung etc. und du bist dein eigener Chef und kannst deine eigene Ideen umsetzen! :idea: