AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Farben kombinieren

Ein Thema von Alexander Roth · begonnen am 2. Jan 2007 · letzter Beitrag vom 4. Jan 2007
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von Alexander Roth
Alexander Roth

Registriert seit: 17. Mai 2004
Ort: Kenn
574 Beiträge
 
Turbo Delphi für Win32
 
#21

Re: Farben kombinieren

  Alt 3. Jan 2007, 11:59

Also ich bin jetzt a bissel verwirrt.
Also um alle Missverständnisse aufzuklären:
Ich will eine Mischung wie bei echten Lichtfarben (und kein Malkasten). Das heißt also Additive Farbsynthese, und keine Farbmischung!!!


Zitat von Reinhard Kern:
das war/ist das Problem von Anfang an: schon die Fragestellung enthält einen Denkfehler - wenn man addiert und den Übertrag abschneidet (wie gefordert, "weisser als weiss geht nicht"), dann erhält man automatisch Veränderungen des Farbtons: Rot FF + Rot FF gibt eben Rot FF, Grün 40 + Grün 40 gibt Grün 80, d.h. der relative Anteil von Grün hat sich verdoppelt. Anders gesagt, Addieren und Mischen sind ein Widerspruch in sich, beides geht nicht, es sei denn, man beschränkt sich auf Sternenhimmel ohne Mond.
Das ist das Problem. Wie kriegt man das gelöst?

Könnte man vielleicht normal addieren, (ohne abschneiden auf 255) und dann alles auf 255 runterskalieren?
Wäre das eine Lösung?

Gruß Alexander
Alexander Roth
Ich bin umgestiegen auf: Lazarus und Ubuntu! Alles OpenSource!

Besuch doch mal: www.roth.us.ms
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#22

Re: Farben kombinieren

  Alt 3. Jan 2007, 13:40
Zitat von Alexander Roth:
:roteyes:
Also ich bin jetzt a bissel verwirrt.
Also um alle Missverständnisse aufzuklären:
Ich will eine Mischung wie bei echten Lichtfarben (und kein Malkasten). Das heißt also Additive Farbsynthese, und keine Farbmischung!!!


Zitat von Reinhard Kern:
das war/ist das Problem von Anfang an: schon die Fragestellung enthält einen Denkfehler - wenn man addiert und den Übertrag abschneidet (wie gefordert, "weisser als weiss geht nicht"), dann erhält man automatisch Veränderungen des Farbtons: Rot FF + Rot FF gibt eben Rot FF, Grün 40 + Grün 40 gibt Grün 80, d.h. der relative Anteil von Grün hat sich verdoppelt. Anders gesagt, Addieren und Mischen sind ein Widerspruch in sich, beides geht nicht, es sei denn, man beschränkt sich auf Sternenhimmel ohne Mond.
Das ist das Problem. Wie kriegt man das gelöst?

Könnte man vielleicht normal addieren, (ohne abschneiden auf 255) und dann alles auf 255 runterskalieren?
Wäre das eine Lösung?

Gruß Alexander
Hallo,

dann ist addieren und dividieren durch 2 (allgemein für n>2 Durchschnitt) schon das Richtige: so addieren sich zwei nebeneinanderliegende Pixel eines Farbbildschirms auf grössere Entfernung. Additiv ist das deswegen, weil RGB ja das Farbmodell für additive Systeme wie einen selbstleuchtenden Bildschirm ist. Für den Malkasten gilt das komplementäre System der Druckfarben (Cyan-Magenta-Gelb) und eine andere Rechnung, weil sich da alles zu schwarz addiert.

Nebenbei bemerkt: BitBlt sind per Definitionem bitweise logische Operationen, Farben addieren oder Mischen geht damit grundsätzlich nicht, weil Addieren weder eine bitweise noch eine logische Operation ist.

Gruss Reinhard
Es genügt nicht, einen Algorithmus nicht zu verstehen, man muss auch unfähig sein, ihn in Programmcode umzusetzen.
  Mit Zitat antworten Zitat
Benutzerbild von Alexander Roth
Alexander Roth

Registriert seit: 17. Mai 2004
Ort: Kenn
574 Beiträge
 
Turbo Delphi für Win32
 
#23

Re: Farben kombinieren

  Alt 3. Jan 2007, 16:33
Sicher dass der Mittelwert das richtige ist?

Ich habe die Farben nochmal überdacht und es müsste so heißen:
weis+grün = sehr helles grün
schwarz+grün=grün
schwarz+weis=weis


Tschüss

Alexander
Alexander Roth
Ich bin umgestiegen auf: Lazarus und Ubuntu! Alles OpenSource!

Besuch doch mal: www.roth.us.ms
  Mit Zitat antworten Zitat
kalmi01
(Gast)

n/a Beiträge
 
#24

Re: Farben kombinieren

  Alt 3. Jan 2007, 17:42
Zitat von Alexander Roth:
Ich habe die Farben nochmal überdacht und es müsste so heißen:
weis+grün = sehr helles grün
schwarz+grün=grün
schwarz+weis=weis
Sieht für mich so aus, als wenn Du nicht die Farben, sondern die Luminanzen addieren willst.

Was ergibt 50% Schwarz (=Grau) + 100% Rot
nach Deiner Meinung ?
Ein dunkleres Rot oder ein blasseres Rot ?

Du hast immer was mit SCHWARZ oder WEISS gemischt, was ist bei Farbe + Farbe ?
  Mit Zitat antworten Zitat
Benutzerbild von Alexander Roth
Alexander Roth

Registriert seit: 17. Mai 2004
Ort: Kenn
574 Beiträge
 
Turbo Delphi für Win32
 
#25

Re: Farben kombinieren

  Alt 3. Jan 2007, 18:03
Es bleibt wie ich gesagt habe. Es muss die Additive Farbsynthese sein!

Zitat von kalmi01:
Was ergibt 50% Schwarz (=Grau) + 100% Rot
nach Deiner Meinung ?
Ein dunkleres Rot oder ein blasseres Rot ?
Blasseres Rot. nach der Additive Farbsynthese müsste das so sein.

Doch die Frage ist: Wie kriege ich die Additive Farbsynthese bei RGB Farben hin?


Gruß Alexander
Alexander Roth
Ich bin umgestiegen auf: Lazarus und Ubuntu! Alles OpenSource!

Besuch doch mal: www.roth.us.ms
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#26

Re: Farben kombinieren

  Alt 3. Jan 2007, 18:58
Zitat von Alexander Roth:
Sicher dass der Mittelwert das richtige ist?

Ich habe die Farben nochmal überdacht und es müsste so heißen:
weis+grün = sehr helles grün
schwarz+grün=grün
schwarz+weis=weis


Tschüss

Alexander
Hallo, falsch gedacht.

Wenn du auf einem Bildschirm abwechselnd schwarze und weisse Punkte setzt, bekommst du nicht weiss, sondern mittelgrau, das macht man ja auch absichtlich so (dithering). Wenn ein RGB-Bildschirm nicht das Additive Farbmodell ist, weiss ich beim besten Willen nicht, was du dir darunter vorstellen willst.

Aber selbstverständlich kannst du dir völlig eigene Addiertheoreme definieren, du musst dann bloss eine passende Software dafür schreiben. Dann ist alles erlaubt.

Gruss Reinhard
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#27

Re: Farben kombinieren

  Alt 3. Jan 2007, 19:59
Es geht hier aber nicht ums Dithering, sondern um die ADDITIVE FARBSYNTHESE!

und die beruht, wie der name schon sagt, darauf, dass zwei farben addiert werden.
und das ginge ja einfach so:
Delphi-Quellcode:
function AddColors(color1,color2: tcolor): TColor;
var r1, g1, b1,
    r2, g2, b2: byte
    r3, g3, b3: integer;
begin
  // falls es sich um eine Windows-Standartfarbe wie z.b clBtnface handelt:
  color1 := colortorgb(color1);
  color2 := colortorgb(color2);
  
  // zerlegen von Farbe 1
  r1 := getrvalue(color1); // ROT
  g1 := getgvalue(color1); // GRÜN
  b1 := getbvalue(color1); // BLAU
  // zerlegen von Farbe 2
  r2 := getrvalue(color2); // ROT
  g2 := getgvalue(color2); // GRÜN
  b2 := getbvalue(color1); // BLAU
  // addieren
  r3 := r1+r2;
  if r3 > 255 then r := 255;
  g3 := g1+g2;
  if g3 > 255 then g := 255;
  b3 := b1+b2;
  if b3 > 255 then b := 255;
  
  // farbwerte zusammensetzen
  result := rgb(r3,g3,b3);
end;
(Zugegebenermaßen nicht gerade optimiert)

Aber das geht mit der additiven Farbmischung nciht:
weis+grün = sehr helles grün <-- wäre weiß
schwarz+grün=grün <-- stimmt
schwarz+weis=weis <-- stimmt
  Mit Zitat antworten Zitat
Benutzerbild von Alexander Roth
Alexander Roth

Registriert seit: 17. Mai 2004
Ort: Kenn
574 Beiträge
 
Turbo Delphi für Win32
 
#28

Re: Farben kombinieren

  Alt 4. Jan 2007, 09:23
Zitat von NamenLozer:
Es geht hier aber nicht ums Dithering, sondern um die ADDITIVE FARBSYNTHESE!

und die beruht, wie der name schon sagt, darauf, dass zwei farben addiert werden.
und das ginge ja einfach so:
Delphi-Quellcode:
function AddColors(color1,color2: tcolor): TColor;
var r1, g1, b1,
    r2, g2, b2: byte
    r3, g3, b3: integer;
begin
  // falls es sich um eine Windows-Standartfarbe wie z.b clBtnface handelt:
  color1 := colortorgb(color1);
  color2 := colortorgb(color2);
  
  // zerlegen von Farbe 1
  r1 := getrvalue(color1); // ROT
  g1 := getgvalue(color1); // GRÜN
  b1 := getbvalue(color1); // BLAU
  // zerlegen von Farbe 2
  r2 := getrvalue(color2); // ROT
  g2 := getgvalue(color2); // GRÜN
  b2 := getbvalue(color1); // BLAU
  // addieren
  r3 := r1+r2;
  if r3 > 255 then r := 255;
  g3 := g1+g2;
  if g3 > 255 then g := 255;
  b3 := b1+b2;
  if b3 > 255 then b := 255;
  
  // farbwerte zusammensetzen
  result := rgb(r3,g3,b3);
end;
(Zugegebenermaßen nicht gerade optimiert)
Super!!! Danke. Ich probiere es aus sobald meine Arbeit (trotz Ferien ) es zulässt.


Zitat von NamenLozer:
weis+grün = sehr helles grün <-- wäre weiß
schwarz+grün=grün &lt;-- stimmt
schwarz+weis=weis &lt;-- stimmt
Dann hatte ich ja doch von Anfang an recht.


@Reinhard Kern:
ich glaube dein denkfehler ist, dass schwarz eine Frabe ist. Das ist sie nämlich NICHT!!! Jedenfalls bei den normalen Lichtfarben. Sieht man auch auf den Bild Da ist alles mit einer schwarzen "Farbe" hinterlegt und sie hat keinen Einfluss auf das schöne ungetrübte Weis in der Mitte.



EDIT:

Es funktioniert!!! Super!!! Problem gelöst!!!

Danke an alle für eure Hilfe!

Gruß Alexander
Alexander Roth
Ich bin umgestiegen auf: Lazarus und Ubuntu! Alles OpenSource!

Besuch doch mal: www.roth.us.ms
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz