![]() |
Re: Farben kombinieren
: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 ![]() Zitat:
Könnte man vielleicht normal addieren, (ohne abschneiden auf 255) und dann alles auf 255 runterskalieren? Wäre das eine Lösung? Gruß Alexander |
Re: Farben kombinieren
Zitat:
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. |
Re: Farben kombinieren
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 |
Re: Farben kombinieren
Zitat:
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 ? |
Re: Farben kombinieren
Es bleibt wie ich gesagt habe. Es muss die
![]() Zitat:
![]() Doch die Frage ist: Wie kriege ich die ![]() Gruß Alexander |
Re: Farben kombinieren
Zitat:
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 |
Re: Farben kombinieren
Es geht hier aber nicht ums Dithering, sondern um die
![]() und die beruht, wie der name schon sagt, darauf, dass zwei farben addiert werden. und das ginge ja einfach so:
Delphi-Quellcode:
(Zugegebenermaßen nicht gerade optimiert)
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; 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 |
Re: Farben kombinieren
Zitat:
Zitat:
@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 ![]() EDIT: :dance: :dance: :dance: :dance: :-D Es funktioniert!!! Super!!! Problem gelöst!!! Danke an alle für eure Hilfe! Gruß Alexander |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:55 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