vbstreets conferințe - Vezi subiect - descompunere de culoare pe r, g, b

Se pare că doar o variabilă, constând în octeți Tres. Ceea ce, respectiv, și amintiți-vă fiecare culoare. Descompusă pot fi compensate bytes sau doar o saltea. operațiuni.
În cazul în care ce culoare se va înțelege.
Voi explica doar cum să izoleze toate cele trei.

Împărțiți numărul de 65536 (cred) in intregime naturale. Și vom obține primul octet al primei culori.

Acum înmulțim acest număr de 65536 și scădea din acest număr. Numărul rezultat (doi octeți rămași) împărțit la 256 (divizibil) și a obține al doilea octet.

Din acest număr înseamnă că ultimii doi octeți scade de-al doilea cumpăra înmulțit cu 256 vom obține al treilea octet.

Cod: Selectați toate „rgb ca de culoare mult dorit
r = rgb / 65536
g = # 40; rgb-r * 65536 # 41/256
b = # 40; rgb-r * 65536 # 41; -g * 256

N-am scrie în VB, astfel pot exista erori în codul „/“ este diviziune întreg. Pro și opschaya Deci, cum și ce să lase corectate sunt astfel.

Toate răspunsurile - mulțumesc.

Gagarin. mai frumos și mai rapid de a utiliza o mască, cGreen = (cColor și h00ff00) / 256

Speranza Ogni Lasciate, ch'entrate Voi.

Alibek a scris (a): Gagarin. mai frumos și mai rapid de a utiliza o mască, cGreen = (cColor și h00ff00) / 256


Alibek, un spectacol, pliz codul meu pentru razhlozheniya la culoare utilizând o mască.
Mulțumesc.

Am păstrat la ce te întreb?
Vreau să fac inversiune richtextbox'e a blocului de text selectat. Dacă există o cale mai ușoară de a face o culoare inversă în controlul (fără conversie la RGB și înapoi din nou), voi fi bucuros să știu despre el.

tyomitch a scris (a): Apropo, cel mai simplu mod de a inversa culoarea de culoare - această culoare XOR vbWhite. Fără nici măști etc.

Ruslan Demidow a scris (a):

tyomitch a scris (a): Apropo, cel mai simplu mod de a inversa culoarea de culoare - această culoare XOR vbWhite. Fără nici măști etc.


Și dacă un utilizator pot schimba implicit setarea nu numai culoarea fontului, dar fundalul pentru richtextedit'a?
Ie de exemplu, în cazul în care fundalul este alb, culoarea fontului negru - orice merge.


Deci, Tady cu culoarea textului și culoarea de fundal este inversat.
Și dacă aveți separat Mona culoarea de fundal și culoarea textului pentru a schimba, apoi iartă, dacă juzverej dumneavoastră concepe negru pe alb, la schimbarea de fond alb - Problema este a lui, nu a ta. ;-)

Dar componentele de culoare descompuse, este posibil, și așa mai departe (de modul în care este cea mai rapidă cale):
Cod: Selectați toate „pentru a crea un proiect, fără a face un singur modul. Și s-au ridicat în el acest cod.

RGBColors publică Tip
rgbRed Ca Byte
rgbGreen Ca Byte
rgbBlue Ca Byte
rgbReserved Ca Byte
end Tip

Public Sub Principal # 40; # 41;
Dim lngColor Ca OLE_COLOR
Dim udtRGB Ca RGBColors

lngColor = VBA.RGB # 40; 188, 81, 204 # 41;

„Imediate este aceasta: "188 | 81 | 204"
Debug.Print udtRGB.rgbRed; "|"; udtRGB.rgbGreen; "|"; udtRGB.rgbBlue
end Sub

Ruslan Demidow a scris (a):

tyomitch a scris (a): Apropo, cel mai simplu mod de a inversa culoarea de culoare - această culoare XOR vbWhite. Fără nici măști etc.


Și dacă un utilizator pot schimba implicit setarea nu numai culoarea fontului, dar fundalul pentru richtextedit'a?
Ie de exemplu, în cazul în care fundalul este alb, culoarea fontului negru - orice merge.


Deci, Tady cu culoarea textului și culoarea de fundal este inversat.


De fapt, cred că da inițial și reprezintă: inversează întreaga regiune a textului, și anume, și font, și de fundal.

TEH3OP a scris (a): Dar descompuse componentele de culoare, este posibil, și așa mai departe (de modul în care este cea mai rapidă cale):
Cod: Selectați toate „pentru a crea un proiect, fără a face un singur modul. Și s-au ridicat în el acest cod.

RGBColors publică Tip
rgbRed Ca Byte
rgbGreen Ca Byte
rgbBlue Ca Byte
rgbReserved Ca Byte
end Tip

Public Sub Principal # 40; # 41;
Dim lngColor Ca OLE_COLOR
Dim udtRGB Ca RGBColors

lngColor = VBA.RGB # 40; 188, 81, 204 # 41;

„Imediate este aceasta: "188 | 81 | 204"
Debug.Print udtRGB.rgbRed; "|"; udtRGB.rgbGreen; "|"; udtRGB.rgbBlue
end Sub

Culoarea de fundal poate cere doar o, nu un singur cuvânt general, dar trebuie să se separe. Dar am rezolvat această problemă prin utilizarea tyomitch'a, pentru care multumesc din nou.

articole similare