Autor Beitrag
bms
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 735

Win XP
Delphi 3, Delphi 6 PE, Delphi 2005 PE
BeitragVerfasst: So 09.09.07 05:20 
Eigentlich dachte ich, daß es einfach ist, aber irgendwo habe ich einen Knoten in der Überlegung. In dem Beispiel mixe ich die blaue mit der gelben Farbe. Rauskommen sollte Grün, kommt aber Grau. Wie man sieht zerlege ich die zuerst die Farben in die Grundfarben. Theoretisch müßte es klappen, aber irgendwo ist der Fehler drinn.


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
procedure TForm1.Button1Click(Sender: TObject);
var
  R, G, B: Integer;
  R1, G1, B1: Integer;
  R2, G2, B2: Integer;
begin
  R1 := GetRValue(clYellow);
  G1 := GetGValue(clYellow);
  B1 := GetBValue(clYellow);

  R2 := GetRValue(clBlue);
  G2 := GetGValue(clBlue);
  B2 := GetBValue(clBlue);

  R := (R1 + R2) div 2;
  G := (G1 + G2) div 2;
  B := (B1 + B2) div 2;

  Color := RGB(R, G, B);
end;

_________________
VORSICHT: Ich behersche seit heute die Fünf-Finger-Handflächen-Herz-Explodier-Schlag-Kampf-Technik >:(
Reinhard Kern
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 591
Erhaltene Danke: 14



BeitragVerfasst: So 09.09.07 07:47 
user profile iconbms hat folgendes geschrieben:
Eigentlich dachte ich, daß es einfach ist, aber irgendwo habe ich einen Knoten in der Überlegung. In dem Beispiel mixe ich die blaue mit der gelben Farbe. Rauskommen sollte Grün, kommt aber Grau. Wie man sieht zerlege ich die zuerst die Farben in die Grundfarben. Theoretisch müßte es klappen, aber irgendwo ist der Fehler drinn.


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.Button1Click(Sender: TObject);
var
  R, G, B: Integer;
  R1, G1, B1: Integer;
  R2, G2, B2: Integer;
begin
  R1 := GetRValue(clYellow);
  {...}
end;


Hallo,

probier mal R1 := GetRValue (ColorToRGB (clYellow)); usw.

Gruss Reinhard
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 480

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: So 09.09.07 09:54 
Im RGB-Modell gibt Gelb und Blau zusammen nunmal nicht grün. Schau dir mal die RGB-Werte für Gelb an: 255-255-0. Hier wird also Rot und Grün "gemischt", und heraus kommt ein strahlendes Gelb. Würde man beim Streichen und rumspielen mit Farbeimern auch nicht erhalten. Blau ist 0-0-255. Merkste was, warum dann Grau raus kommt? ;-)

Hat was damit zu tun, dass RGB ein additives Farbmodell ist, und was man so beim Farben mischen im realen Leben bekommt, eher einem subtraktivem Modell wie CMYK entspricht. Probier mal, die RGB-Werte von gelb und blau zuerst in den CMYK-Raum zu übersetzen, deine Rechnung dort durchzuführen und anschließend zurück konvertieren.

_________________
We are, we were and will not be.
Corpsman
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 228

KUbuntu 10.4
Lazarus
BeitragVerfasst: So 09.09.07 10:19 
rgb = 1 - (cmy)

c'm'y'k : k = min ( c,m,y ) c'm'y'= cmy - k

falls du nicht weist was cmyk ist.

_________________
--
Just Try it.
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 480

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: So 09.09.07 10:23 
Hab das aber grade mal ausprobiert. Das mit dem Mittelwert klappt da auch nicht. :nixweiss:

_________________
We are, we were and will not be.
ultra2k
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 82

XP x64
D7 Enterprise
BeitragVerfasst: Mo 10.09.07 01:58 
Hi, ich hab grad ein Problem von mir gepostet in dem sich glaube ich schon die Antwort auf dein Problem befindet :wink:

www.delphi-forum.de/...+warum+oO_76194.html

_________________
...wenn NULL besonders groß ist, isses schon fast wie ein bisschen EINS!