 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
MCAT Član


Pridružen-a: Ned 18 Nov 2007 22:06 Prispevkov: 306 Aktiv.: 1.43 Kraj: Moravče (JN76JD)
|
Objavljeno: Pon Dec 17, 2007 11:11 pm Naslov sporočila: Delphi - mešanje barve |
|
|
Pozdravljeni!
Se je že kdo ukvarjal z barvami? Jaz sem se že nekaj časa in sestavil tudi svojo knjižico: http://delphi4u.awardspace.com/projects.html
Za mešanje svetlobe se uporablja tale funkcjia:
Koda: |
function GetAverageColor(C1,C2: TColor): TColor;
var
R,G,B: byte;
begin
C1:=ColortoRGB(C1);
C2:=ColortoRGB(C2);
R:=(GetRValue(C1)+GetRValue(C2)) div 2;
G:=(GetGValue(C1)+GetGValue(C2)) div 2;
B:=(GetBValue(C1)+GetBValue(C2)) div 2;
Result:=RGB(R,G,B);
end; |
Ampak še vedno ne vem, kako bi mešal pigmente.
Rumena+Modra=Zelena
Modra+Rdeča=Vijolična
Rdeča+Rumena=Oranžna
Modra+Rumena+Rdeča=Rjava
Ima kdo kakšno idejo, kako bi to naredil?
LP
_________________ Gregor, S53SL
Think out of . |
|
Nazaj na vrh |
|
 |
chaos Član


Pridružen-a: Sob 16 Sep 2006 22:12 Prispevkov: 1063 Aktiv.: 4.64 Kraj: Zagorje ob Savi
|
Objavljeno: Tor Dec 18, 2007 6:44 am Naslov sporočila: |
|
|
Ne vem oz. ne razumem, v čem je problem. Za mešanje barv bo poskrbel tvoj barvni model -- v RGB je rdeča+zelena+modra = bela (additivni model), v CMY(K) je cyan+magenta+yellow = rjava-črna (subtraktivni model). Sicer imaš pa to že prikazano v svoji ikoni RYB se pa ne uporablja kaj veliko.
Če bi v RGB (to je privzet model na računalniku) rad dobil vijolično, pač seštej enake količine modre in rdeče.
$FF0000 + $0000FF = $FF00FF
Tukaj so barve v hex, potem jih pa lahko spremeniš v TColor in uporabljaš poznane funkcije.
http://delphi.about.com/cs/adptips2001/a/bltip0301_5.htm
http://en.wikipedia.org/wiki/RGB_color_model
http://en.wikipedia.org/wiki/CMYK_color_model
LP!
|
|
Nazaj na vrh |
|
 |
GJ Član


Pridružen-a: Čet 02 Nov 2006 15:51 Prispevkov: 946 Aktiv.: 4.16 Kraj: Ljubljana
|
Objavljeno: Tor Dec 18, 2007 12:48 pm Naslov sporočila: |
|
|
Barvni printer uporablja RYB, tudi pod Delphijem!
LP GJ
|
|
Nazaj na vrh |
|
 |
chaos Član


Pridružen-a: Sob 16 Sep 2006 22:12 Prispevkov: 1063 Aktiv.: 4.64 Kraj: Zagorje ob Savi
|
Objavljeno: Tor Dec 18, 2007 1:22 pm Naslov sporočila: |
|
|
Kje si pa to videl? Lahko napišeš proizvajalca in model tiskalnika, za katerega misliš da ima RYB barve?
Zaenkrat so še vsi barvni tiskalniki, ki sem jih videl, bili CMY, CMYK ali pa mogoče kakšni CcMmYKk (ena od variant s sedmimi kartušami), kjer gre za več odtenkov iste barve, ki pripomorejo k malo boljšemu gamutu.
RYB je starina, ki se v računalništvu ne uporablja (slab gamut - ne da se prikazati zelene, cyan ...), uporabljajo se RGB, CMYK, LAB, HSB ...
|
|
Nazaj na vrh |
|
 |
MCAT Član


Pridružen-a: Ned 18 Nov 2007 22:06 Prispevkov: 306 Aktiv.: 1.43 Kraj: Moravče (JN76JD)
|
Objavljeno: Tor Dec 18, 2007 1:58 pm Naslov sporočila: |
|
|
@ chaos:
$FF0000 + $0000FF = $FF00FF
to je mešanje svetlobe in ne pigmenta.
Jaz pa hočem mešati pigment. Če na enak način kot si ga omenil zmešamo modro in rumeno se pravi:
$FFFF00 + $0000FF =$FFFFFF dobimo belo,
a pri odštevalnem mešanju (pigmenti) bi morala priti zelena.
Torej iščem funkcijo, ki bi mešala pigment in ne svetlobo.
Vseeno hvala, za odgovor.
_________________ Gregor, S53SL
Think out of . |
|
Nazaj na vrh |
|
 |
igo Član

Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3641 Aktiv.: 15.96
|
Objavljeno: Tor Dec 18, 2007 2:19 pm Naslov sporočila: |
|
|
MCAT je napisal/a: |
@ chaos:
$FF0000 + $0000FF = $FF00FF
to je mešanje svetlobe in ne pigmenta.
Jaz pa hočem mešati pigment. Če na enak način kot si ga omenil zmešamo modro in rumeno se pravi:
$FFFF00 + $0000FF =$FFFFFF dobimo belo,
a pri odštevalnem mešanju (pigmenti) bi morala priti zelena.
Torej iščem funkcijo, ki bi mešala pigment in ne svetlobo.
Vseeno hvala, za odgovor. |
Ja če se gre za odštevalni način, bi lahko bilo tudi takole:
$FFFFFF - $0000FF =$FFFF00 , da od bele odštevaš in na koncu dobiš kvečjemu črno $000000 .
Ali pa je moj odgovor na slepo brca v temo .
LP,
Igor
_________________ Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor |
|
Nazaj na vrh |
|
 |
chaos Član


Pridružen-a: Sob 16 Sep 2006 22:12 Prispevkov: 1063 Aktiv.: 4.64 Kraj: Zagorje ob Savi
|
|
Nazaj na vrh |
|
 |
igo Član

Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3641 Aktiv.: 15.96
|
|
Nazaj na vrh |
|
 |
MCAT Član


Pridružen-a: Ned 18 Nov 2007 22:06 Prispevkov: 306 Aktiv.: 1.43 Kraj: Moravče (JN76JD)
|
Objavljeno: Tor Dec 18, 2007 3:53 pm Naslov sporočila: |
|
|
Vem da moram uporabiti CMY, samo ne vem kako. Poskusim tole:
Koda: |
function MixPigments(const Cl1,Cl2:TColor):TColor;
var
C1,M1,Y1,C2,M2,Y2:single;
begin
C1:=1 - (GetRValue(Cl1) / 255 );
M1:=1 - (GetGValue(Cl1) / 255 );
Y1:=1 - (GetBValue(Cl1) / 255 );
C2:=1 - (GetRValue(Cl2) / 255 );
M2:=1 - (GetGValue(Cl2) / 255 );
Y2:=1 - (GetBValue(Cl2) / 255 );
Result:=RGB(
round(127.5*(C1-C2)),
round(127.5*(M1-M2)),
round(127.5*(Y1-Y2)));
end; |
...a pride isto kot zgoraj navedena koda.
V vsakem primeru pride modra+rumena =sivkasta , morala bi pa priti zelena.
Ali lahko kdo napiše kodo po takem vzorcu oz. podobnemu.
Opis: |
Tole je seznam barv in kako se mešajo. Naredil sem s pomočjo printerja. |
|
 Download |
Ime datoteke: |
mixing.txt |
Velikost datoteke: |
1.28 KB |
Downloadano: |
8 krat |
_________________ Gregor, S53SL
Think out of . |
|
Nazaj na vrh |
|
 |
jur Član


Pridružen-a: Pet 02 Dec 2005 14:45 Prispevkov: 5142 Aktiv.: 21.65 Kraj: [color=zelena]Ljubljana[/color]
|
Objavljeno: Tor Dec 18, 2007 4:13 pm Naslov sporočila: |
|
|
Ali si že pogledal delphi help: Windows SDK (help za SDK, ne za delphi).
Za RGB, CMY , color .... pove pravzaprav vse.
Jur
Opis: |
|
Velikost datoteke: |
33.91 KB |
Pogledana: |
3 krat |

|
|
|
Nazaj na vrh |
|
 |
MCAT Član


Pridružen-a: Ned 18 Nov 2007 22:06 Prispevkov: 306 Aktiv.: 1.43 Kraj: Moravče (JN76JD)
|
Objavljeno: Tor Dec 18, 2007 5:21 pm Naslov sporočila: |
|
|
Kaj pa naj bi pisalo, ker jaz nisem zasledil nič o CMY.
_________________ Gregor, S53SL
Think out of . |
|
Nazaj na vrh |
|
 |
chaos Član


Pridružen-a: Sob 16 Sep 2006 22:12 Prispevkov: 1063 Aktiv.: 4.64 Kraj: Zagorje ob Savi
|
Objavljeno: Tor Dec 18, 2007 5:53 pm Naslov sporočila: |
|
|
V CMYK modelu so barve predstavljene kot procenti (ali vrednosti med 0 in 1), zato jih seštevaš -> 100% C + 50 % M + 50% M + 100% Y = (skoraj) črna. Predstavljaj si, kako dela tiskalnik. Imaš bel izvor svetlobe in bel list papirja. Bolj boš nanašal barvo na ta papir, manj belega papirja se bo videlo, čedalje več svetlobe bo sfiltrirane ... če bi na list nanesel vse barve 100%, bi bila svetloba popolnoma sfiltrirana in bi videl črno površino.
Kot sem pa napisal je tista konverzija 1-RGB zelo poenostavljena, upoštevati je treba še cel kup stvari, npr. gamute obeh modelov, nelinearnost, vsaka komponenta CMYK je v rsnici odvisna od vseh RGB komponent ...
Verjetno bi bilo res pametno pogledat, če ima win api kakšne funkcije za konverzijo, ki bi uporabljaje v windows vgrajen color management, ki bi bolje znal pretvarjati barve.
Ne sme se tudi pozabiti, da sta oba modela -- RGB in CMYK odvisna od naprave, na kateri se uporabljata, zato ne moreš narediti univerzalne pretvorbe ...
LP!
|
|
Nazaj na vrh |
|
 |
MCAT Član


Pridružen-a: Ned 18 Nov 2007 22:06 Prispevkov: 306 Aktiv.: 1.43 Kraj: Moravče (JN76JD)
|
Objavljeno: Pet Dec 21, 2007 11:37 pm Naslov sporočila: |
|
|
V primeru, če je podlaga 100% bela, svetloba na podlago pa 100% svetloba. Kakšna bi bila v tem primeru formula za mešanje pigmenta?
_________________ Gregor, S53SL
Think out of . |
|
Nazaj na vrh |
|
 |
chaos Član


Pridružen-a: Sob 16 Sep 2006 22:12 Prispevkov: 1063 Aktiv.: 4.64 Kraj: Zagorje ob Savi
|
Objavljeno: Sob Dec 22, 2007 3:09 pm Naslov sporočila: |
|
|
MCAT je napisal/a: |
V primeru, če je podlaga 100% bela, svetloba na podlago pa 100% svetloba. Kakšna bi bila v tem primeru formula za mešanje pigmenta? |
Formula je v vsakem primeru ista - barve, pigmenti se seštevajo. Barva svetlobe in papirja na samo mešanje (enačbe) nima vpliva, čeprav je jasno, da bo dejansko vplivala na barvo.
Samo mešanje ni noben problem, problem je prikaz takih barv na izhodni napravi, kjer je potrebno upoštevati barvne profile in pa seveda pretvorba med različnimi barvnimi modeli.
Če bi rad samo malo računal in pretvarjal v / iz CMYK modela, uporabi v tej temi napisane enačbe. Če bi rad imel verno reprodukcijo / konverzijo / prikaz barv, si po moje zagrabil preveliko žlico. Za primer si lahko pogledaš GIMP, linuxovski program za obdelavo slik, ki še kar nima podpore za CMYK. Verjemi mi, da razlog ni lenoba programerjev ...
Mislim da so ti zdaj vsaj osnove jasne, za bolj resne oz. specifične stvari ti svetujem, da stopiš v kontakt s kakšnim grafikom, ALU-jcem ali kom podobnim, ki bi ti znal bolj detajlno razložiti probleme. Ali pa uporabiš internet -- bi se dalo najti še kakšne dodatne informacije:
http://en.wikipedia.org/wiki/CMYK_color_model
http://en.wikipedia.org/wiki/CcMmYK_color_model
http://en.wikipedia.org/wiki/Spot_color
http://en.wikipedia.org/wiki/Color
http://en.wikipedia.org/wiki/Color_theory
http://en.wikipedia.org/wiki/Additive_color
http://en.wikipedia.org/wiki/Subtractive_color
http://en.wikipedia.org/wiki/Lab_color_space
http://en.wikipedia.org/wiki/RGB_color_space
...
LP!
|
|
Nazaj na vrh |
|
 |
MCAT Član


Pridružen-a: Ned 18 Nov 2007 22:06 Prispevkov: 306 Aktiv.: 1.43 Kraj: Moravče (JN76JD)
|
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 9 dni
Powered by phpBB © 2001, 2005 phpBB Group
|