Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Kaikki värit (vb)

Sivun loppuun

petrinm [24.03.2004 17:02:48]

#

Miten kaikki värit saa järjestettyä picture lootaan palettin tavoin? Jos et ymmärtänyt, tossa on esimerkki kuva asiastani:
http://koti.mbnet.fi/petrinm/Palet.jpg


HUOM: Siis RGB käskyllä!!

hunajavohveli [24.03.2004 17:14:59]

#

Mjaah, no siihen tarvitaan joku kaava, miten se osaa pistää jokaiseen pikseliin oikean värisävyn. Ensin kannattaisi kehittää sellainen, jolle syötetään "Sävy", "Kirkkaus" ja "Harmaus", ja niiden perusteella ohjelma pistäisi oikean määrän punaisesta vihreää ja sinistä. En nyt tällaista itse ihan tuosta vaan osaisi tehdä.

Toistaalta voisit yksinkertaisesti kopioida tuo paletin kuvan PictureBoxiin, kun sinulle se näkyy jo valmiina olevan.

Edit: Eikä tuossa paletissa muuten tietenkään edes näy kaikki mahdolliset värisävyt, vain murto-osa. Jos nyt yrität tehdä jotain piirto-ohjelmaa, mistä saa valita värin paletista, niin itse olen kokeillut sellaista, että kun klikkaa PictureBoxia, niin se lisää punaista, kun liikuttaa hiirtä oikealle ja vihreää kun liikuttaa alas, tjsp.

rndprogy [24.03.2004 17:33:29]

#

Kaikkia värejä on tosiaan aika vaikea saada ainakin 32 bittisiä. Siinä on 16777216 eri väriä ja sen neliöjuuri on 4096 eli ei mahtuisi koko näyttöön. Tai no et varmaan niin ajatellutkaan.

hunajavohveli [24.03.2004 17:38:03]

#

Mitenkä oikein laskit tuon värimäärän? Eikös se pitäisi laskea 2 potenssiin 32, joka muuten on 4294967296?

rndprogy [24.03.2004 17:59:49]

#

käytin vb:n functiota 'print sqr(16777216)' ja vastaukseksi tuli 4096. Ja käytä point käskyä valkoiseen kohtaan tulee luku 16777215 joka on muuten maksimi värimäärä eli rgb(255, 255, 255)

T.M. [24.03.2004 17:59:56]

#

Jos olet aina halunnut nähdä kaikki värit niin tässä:
http://koti.mbnet.fi/winuus/AllColors.png (kannattaa tallentaa koneelle eka) Huomaa tiedoston pieni koko :) Kaikkeen se png pystyykin...

Tuossa kuvassa on tasan 16777216 eri väriä (256*256*256), eikä yhtään samaa. Ja tuota enempää värejä ei voi näyttääkään perinteisillä näytöillä.

remontti-reiska [24.03.2004 18:07:47]

#

Vielä kun näkyisi tuo kuva, niin olisi parempi ;).

zigilii [24.03.2004 18:25:41]

#

Tälleen saa tehtyä kaikki värit.
Petrinm et varmaan tämmöstö tarkottanut.
Formilla pitää olla VScroll1,VScroll2,VScroll3 ja Picture1.

Private Sub Form_Load()
    VScroll1.Min = 1
    VScroll2.Min = 1
    VScroll3.Min = 1

    VScroll1.Max = 256
    VScroll2.Max = 256
    VScroll3.Max = 256

End Sub

Private Sub VScroll1_Change()
    Picture1.BackColor = RGB(VScroll1.Value, VScroll2.Value, VScroll3.Value)
End Sub

Private Sub VScroll2_Change()
    Picture1.BackColor = RGB(VScroll1.Value, VScroll2.Value, VScroll3.Value)
End Sub

Private Sub VScroll3_Scroll()
    Picture1.BackColor = RGB(VScroll1.Value, VScroll2.Value, VScroll3.Value)
End Sub

remontti-reiska [24.03.2004 18:52:55]

#

Ziglii: No en oikeastaan yhtään usko, että saisi.

T.M. [24.03.2004 18:53:55]

#

remontti-reiska kirjoitti:

Vielä kun näkyisi tuo kuva, niin olisi parempi ;).

Tallenna kuva kovalevyllesi ja avaa se jollain PNG:tä tukevalla kuvankäsittelyohjelmalla, älä unohda myöskään käyttää tietokonetta

setä [24.03.2004 18:57:20]

#

Mulla oli tuohon valmis koodi jokunen vuosi sitten, mutta en löydä lähdekoodia mistään. AxtiveX:nä löytyy. Ei koodi kovin kummoinen ollut ja voisi sen uudelleenkin väsätä jos on tarpeen. Pset käskyillä tökitään påisteitä liuttaen värejä sopivasti RGB-funktiolla. Tuloksena on juuri tuo sama kuvio hiukan isompana.

remontti-reiska [24.03.2004 18:59:42]

#

T.M: Mitäs sinulla oikeastaan on minua vastaan?

efteri [24.03.2004 19:08:26]

#

ehkä T.M sanoo ajatukset niin kuin mietii eli suoraan eikä mutkiteltuna...

setä [24.03.2004 19:56:10]

#

Tossa png-kuvassa on kaikki värit vain, jos sen zoomaa niin, että pikkuruutu on 256 pixeliä kanttiinsa. Siis 256 kpl tämmöisiä ruutuja.

T.M. [24.03.2004 20:03:00]

#

Toisinsanoen, tossa on kaikki värit jos ei zoomaa yhtään :)

setä [24.03.2004 20:16:41]

#

Mun piti zoomata ja homma söi mielettömästi koneen muistia. Piti käynnistää koko masina uudelleen. Png-kuva on kai joku vektorikuva tai jollain tapaa koodattu. Katseluohjelmalla se luodaan ruudulle.

hunajavohveli [24.03.2004 20:52:21]

#

Milläs perusteella tuo on sitten 32-bittinen, jos kerran se lasketaan 256^3 vai onko tuo nyt 24-bittinen?
Muuten jos jotain Scrollaus-palkkeja rupeatte käyttämään niin sellaisessa värinvaihdossa menee pidemmän päälle hermot. :) Siksi kehitinkin oman kätevän systeemin juuri kehittämääni grafiikkaohjelmaan. Profiilista löytyy lisätietoa, jos kiinnostaa (en kyllä tajua miksi kiinnostaisi) :)

remontti-reiska [24.03.2004 21:25:42]

#

lainaus:

Tallenna kuva kovalevyllesi ja avaa se jollain PNG:tä tukevalla kuvankäsittelyohjelmalla, älä unohda myöskään käyttää tietokonetta

Eikös niitä .png kuvia voi katsoa myös muissakin laitteissa kuin vain tietokoneessa ;). No joo, periaatteessa voisit sanoa suoraan sanottavasi eikä kierrellä ja kaarrella tuollaisella viestillä.

Huomattavan offtopiciksi meni taas kerran :).

petrinm [24.03.2004 22:11:56]

#

Keksin ratkaisun asiaani, mutta miten saan muutettua point käskyn tuloksen RGB koodiks?

setä [24.03.2004 22:14:11]

#

https://www.ohjelmointiputka.net/keskustelu/4360-värikoodin-pilkkominen-väreiksi-vb

T.M. [24.03.2004 22:15:55]

#

hunajavohveli kirjoitti:

Milläs perusteella tuo on sitten 32-bittinen, jos kerran se lasketaan 256^3 vai onko tuo nyt 24-bittinen?
Muuten jos jotain Scrollaus-palkkeja rupeatte käyttämään niin sellaisessa värinvaihdossa menee pidemmän päälle hermot. :) Siksi kehitinkin oman kätevän systeemin juuri kehittämääni grafiikkaohjelmaan. Profiilista löytyy lisätietoa, jos kiinnostaa (en kyllä tajua miksi kiinnostaisi) :)

Hmm.. niinpä :D Ainoa laskutoimitus mistä sain tulokseksi 16777216 (johon sisältyy numero 32) oli: 2^32/256 heh...

Itse olen toteuttanut värinvalinnan tällä tapaa: http://koti.mbnet.fi/winuus/inp-ima.php

setä [24.03.2004 22:27:16]

#

Hieno, mutta muistuttaa kovin Common DialogBoxin värivalintaa eli Windowsin värivalintaa. Muuten 16777216 = 256^3 eli 24-bittinen.

T.M. [24.03.2004 22:35:53]

#

setä kirjoitti:

Hieno, mutta muistuttaa kovin Common DialogBoxin värivalintaa eli Windowsin värivalintaa...

Miksi kaikki aina sanovat että: "...mutta muistuttaa windowsin värinvalintaa" :D
Aivan kuin se olisi huono asia :->

setä kirjoitti:

...Muuten 16777216 = 256^3 eli 24-bittinen.

Jep, 24 bittinen se taitaa olla (2^24), mutta miksi ihmeessä windowsin asetuksissa lukee: "True Color (32-bittinen)" vaikka se on oikeasti 24? Todella outoa.

setä [25.03.2004 07:54:31]

#

True Color (32-bit) kunkin päävärin osuus ilmaistaan 12 bitillä eli 4096 eri voimakkuutta, kun taas VB:n RGB-funktiossa askeleita on tuo 256 eli 8 bittiä. Väripaletti on siis vieläkin hienojakoisempi, tuskin silmällä voi eroa huomata.

Bill Keltanen [25.03.2004 14:16:44]

#

   VScroll1.Max = 256
   VScroll2.Max = 256
   VScroll3.Max = 256

Muuten, RGB:ssä max arvo on 255 eikä 256!!!!

zigilii [25.03.2004 14:47:54]

#

rgb = 1-256
ainakin tietääkseni
ja tällä sivulla on 4 (minun lisäkseni) sanonut että niitä on on 256
jos laskin oikein niin niitä on 4

edit: ja kaksi on sanonut että 255

setä [25.03.2004 14:54:04]

#

RGB-arvot ovat välillä 0 - 255 eli yhteensä 256 kpl.

hunajavohveli [25.03.2004 20:25:40]

#

Niin ottakaa huomioon, että nollasta aloitetaan. Huomasinkin tuon VB:n värivajauden, kun latasin grafiikkaohjelmaani 32-bittisen kuvan, ja ennen niin sileässä väriliu'ussa näkyi selkeästi värien erot.

setä [25.03.2004 22:00:52]

#

Erot saattaa johtua kuvan pakkauksesta. Kyse oli varmaan jpg-kuvasta. Kyllä 24-bittiseen väriin saa hyvin tasaisen liun. Mulla ei ittellä kyllä kovin tarkat nää okulaarit ole.

T.M. [25.03.2004 22:28:12]

#

Olenko nyt ihan pihalla, vai miksi tuo 32 bittinen väriskaala tuntuu epätodelliselta?
Eihän näyttö osaa näyttää kuin 24 bittisiä värejä?
Eli näitä:
R: 0-255
G: 0-255
B: 0-255
256*256*256 = 16777216

Ei näin?:
R: 0-1624.498677...
G: 0-1624.498677...
B: 0-1624.498677...
1625.498677*1625.498677*1625.498677 = 4294967296

2^24 = 256*256*256 = 24 bittinen väriskaala = 16777216
2^32 = 256*256*256*256 = 32 bittinen väriskaala = 4294967296

Joku viisaampi voisi selittää tuon 32 bittisen väriskaalan... *pihalla*

setä [25.03.2004 22:40:08]

#

setä kirjoitti:

True Color (32-bit) kunkin päävärin osuus ilmaistaan 12 bitillä eli 4096 eri voimakkuutta, kun taas VB:n RGB-funktiossa askeleita on tuo 256 eli 8 bittiä. Väripaletti on siis vieläkin hienojakoisempi, tuskin silmällä voi eroa huomata.

Siis VB:ssä RGB-funktiossa on rajana 8 bittiä/väri. Windowssin TrueColorissa on 12 bittiä/väri

T.M. [25.03.2004 22:42:34]

#

Mikä syy tuhlata bittejä?

Edit:
Siis, näytön värithän koostuvat 0-255 välisistä arvoista. Miksi pitää käyttää 12 bittiä näyttämään nuo samat arvot? vaikka se onnistuisi 8 bitillä...
Siinäpä pähkinää kerrakseen :P

hunajavohveli [26.03.2004 14:39:50]

#

No eivätpähän koostu 0-255, tai eikös niitä värivoimakkuuksia voi säätää ihan mille tasolle tahansa? Värimäärä riippuu siitä, kuinka paljon noiden voimakkuuksien ero on. Mitä tiheämmäs voimakkuuksia, sitä enemmän saa väriyhdistelmiä. VB:n 24-bittisessä systeemissä tuo tiheys on asteikolla 0-255, mutta Windowsin 32-bittisessä järjestelmässä luku on siis 4096.

Ja muuten setä, kyseessä oli bmp-kuva.

Edit: Ja veikkaampa, ettei 32-bittistä suurempaa värimäärää näyttäviä koneita edes tehdä, koska jo nyt kahta mahdollisimman samankaltaista väriä (jotka eivät ole kuitenkaan samat) on mahdoton ihmissilmällä erottaa toisistaan.

T.M. [26.03.2004 19:48:51]

#

Kylläpäs koostuu 0-255
Toki niitä voi säätää mille tasolla tahansa, mutta mitä siitä hyötyy jos mikään ohjelma ei osaa lukea niitä?

Siis:
2^24 = 256*256*256 = 16777216 = 24 bittinen?
2^32 = 256*256*256*256 = 4294967296 = 32 bittinen?
2^32 = 1625.498677*1625.498677*1625.498677 = 4294967296 = 32 bittinen?
2^36 = 4096*4096*4096 = 68719476736 = 36 bittinen?

Ja mikään kuvankäsittelyohjelmahan ei tallenna 32 bittisiä värejä kuviin? Syy varmaankin se ettei niitä osata lukea / kannata käyttää?? (sen takia kun niitä ei voida erottaa)

Siis, selittäkääpäs tuo 32 bittinen väriskaala tälläiselle juntille kuin minä olen.

lainaus:

Mikä syy tuhlata bittejä?

Niin, tuokin oli hieman epäselvä.

hunajavohveli [26.03.2004 19:52:26]

#

No mitä selittämistä siinä nyt on? Ihan sama periaate kuin muissakin väriskaaloissa. Mahdollisia väriasteita vain on 2^8 kertaa enemmän kuin 24-bittisessä.

T.M. [26.03.2004 20:25:18]

#

Huoh... Mitä hyötyä sillä saavutetaan?
Sitäkö että bittejä voitaisiin tuhlata vain sen takia että mahdollisia väriasteita on 2^8 kertaa enemmän kuin 24-bittisessä?
Ja jos et tiennyt, näyttö ei tue ~16 miljoonaa eri värivaihtoa enempää. Vai miksen voi valita minun paintillani väriarvoa: R:1044 G:623 B:1112 ?

rndprogy [26.03.2004 20:33:04]

#

?? olen aina luullut että 32 bittisessä on r255 g255 b255.
Mutta tuo painthan käsittää ainakin bmp muodossa vain 24 bittiset värit.

hunajavohveli [26.03.2004 20:33:35]

#

T.M. kirjoitti:

Huoh... Mitä hyötyä sillä saavutetaan?
Sitäkö että bittejä voitaisiin tuhlata vain sen takia että mahdollisia väriasteita on 2^8 kertaa enemmän kuin 24-bittisessä?
Ja jos et tiennyt, näyttö ei tue ~16 miljoonaa eri värivaihtoa enempää. Vai miksen voi valita minun paintillani väriarvoa: R:1044 G:623 B:1112 ?

Ai miksei paintissa voi valita noin? No koska paint ei tue 32-bittisiä värejä.

Ai mitä hyötyä saavutetaan? No tietääkseni vierekkäiset 24-bittiset värit voi vielä ihmissilmä erottaa, mutta ei enää 32-bittisiä.

Edit: No enpä kyllä tiedä sitten, jos näytön asteet ulottuvat vain 16 miljoonaan, mutta 32-bittiset värit 4 miljardiin. Äääh, en nyt enää jaksa jauhaa tästä. Olen sanonut kaiken, mitä sanottavaa oli.

T.M. [26.03.2004 20:35:38]

#

Mikäs ohjelma tukee 32bittisiä väriarvoja?

Gaxx [26.03.2004 20:37:32]

#

lainaus:

Ai mitä hyötyä saavutetaan? No tietääkseni vierekkäiset 24-bittiset värit voi vielä ihmissilmä erottaa, mutta ei enää 32-bittisiä

Osaisiko joku kertoa miksi sitten peleihin pistetään mahdollisuudeksi 64-bittiset värit 32-bittisten ja 16-bittisten lisäksi?

hunajavohveli [26.03.2004 20:38:34]

#

T.M. kirjoitti:

Mikäs ohjelma tukee 32bittisiä väriarvoja?

Ei kai sitten mikään, jos kerran 16 miljoona on maksimi.

T.M. [26.03.2004 20:39:59]

#

Sä siis luulet tietäväs mitä sä tiedät luulevas? Huoh!

Kertokaa nyt joku edes kunnolla miksi 32 bittisiä värejä käytetään wintoosassa?

hunajavohveli [26.03.2004 20:40:37]

#

Gaxx kirjoitti:

lainaus:

Ai mitä hyötyä saavutetaan? No tietääkseni vierekkäiset 24-bittiset värit voi vielä ihmissilmä erottaa, mutta ei enää 32-bittisiä

Osaisiko joku kertoa miksi sitten peleihin pistetään mahdollisuudeksi 64-bittiset värit 32-bittisten ja 16-bittisten lisäksi?

Varmaan samasta syystä kun myydän äänentoistolaitteita ja mainostetaan, että "JOO ostakaa kuulkaa tällaiset, nää pystyy toistamaan 50000 Hertsiä."
Huijataan niitä, jotka eivät tajua, että ihmisen kuuloalue loppuu 15000 - 20000 Hertsiin. Sama juttu pätee varmaan noihin väreihinkin.

rndprogy [26.03.2004 20:53:48]

#

Miksi ihmeessä qb:n future libraryssa jos otta 32 bittisen näyttö moodin se näyttää vain r255 g255 b255.

hunajavohveli [26.03.2004 20:58:14]

#

Hö, eihän noilla saa aikaan 32-bittisiä värejä, vaan ainoastaan 24-bittiset. Tietysti future libraryn suunnittelijoille on voinut sattua erehdys.

sooda [26.03.2004 21:04:06]

#

normaalissa 32-bittisessä paletissa on mun käsitykseni mukaan 24 bittiä värejä ja loput sitten jotain ekstrainfoa, eikä värejä. huijausta.

hunajavohveli [26.03.2004 21:11:22]

#

sooda kirjoitti:

normaalissa 32-bittisessä paletissa on mun käsitykseni mukaan 24 bittiä värejä ja loput sitten jotain ekstrainfoa, eikä värejä. huijausta.

Eli siis huijareita kaikki tyynni. Mitähän seuraavaksi keksitään? Stepperi, joka pyörii 100 kilometriä tunnissa?

Jogge [26.03.2004 21:20:41]

#

Jotain tämän tapaista selitystä löysin googlettamalla:

32-bittisissä väreissä on yhtä paljon värejä kuin 24-bittisissä, mutta 32-bittisiä värejä on nopeampi käyttää, koska näytönohjaimen prosessoripiiri voi kopioida dataa vain bitin monikertoina (8, 16, 32, 64 bittiä) ja 24-bittisissä väreissä joudutaan tekemään 3 8-bitin siirtoa, kun 32-bittisissä väreissä sama onnistuu yhdellä 32-bitin siirrolla.

hunajavohveli [26.03.2004 21:26:55]

#

Aivan, siitä se siis johtuu, koska 24 ei ole mikään kakkosen potenssi!
Edit: Mutta ne 64-bittiset menevät vielä vähän yli...

T.M. [26.03.2004 21:47:12]

#

Jogge kirjoitti:

Jotain tämän tapaista selitystä löysin googlettamalla:

32-bittisissä väreissä on yhtä paljon värejä kuin 24-bittisissä, mutta 32-bittisiä värejä on nopeampi käyttää, koska näytönohjaimen prosessoripiiri voi kopioida dataa vain bitin monikertoina (8, 16, 32, 64 bittiä) ja 24-bittisissä väreissä joudutaan tekemään 3 8-bitin siirtoa, kun 32-bittisissä väreissä sama onnistuu yhdellä 32-bitin siirrolla.

Kiitoksia selvennyksestä.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta