Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: vb6 liukuväri

Milu [01.05.2005 20:49:42]

#

Löytyiskö hyviä ehdotuksia värien vaihtamiseen asteittain.

Pitäisi saada tietylle numeroarvoille omat värit ja ne vaihtuisivat astettain toiseen väriin.
Luvut ovat 10-18 yhden desimaalin tarkkuudella.

12 sininen, 13 vihreä, 14 keltainen, 15 punainen.

Eli alkaisi 10:stä ja olisi sininen 12:een toista asti, sitten alkaisi muuttumaan astettain sinisestä vihreäksi kunnes saavuttaisi luvun 13 ja siitä taas vihreästä keltaiseen jne..


Eli
12.0, 12.1, 12.2 ,12.3.......12.9, 13.0
Kymmenellä pykällyksellä väri pitäisi saada sinisestä vihreään tasaisesti.


Tossa olis esimerkkiä mitä tavallaan ajan takaa.

http://www.daytona-twintec.com/PC_Link_TCFI1.jpg

Antti Laaksonen [01.05.2005 22:07:43]

#

Helppo tapa on muuttaa värin RGB-arvon osia sopivassa suhteessa jokaisella askeleella. Jos aloitusväri on (100, 200, 0), lopetusväri on (150, 0, 50) ja askelia on kuusi, muunnos on ((150 - 100) / 5, (0 - 200) / 5, (50 - 0) / 5) eli (10, -40, 10). Siis ensin väri on (100, 200, 0), sitten (100 + 10, 200 - 40, 0 + 10) eli (110, 160, 10), sitten (110 + 10, 160 - 40, 10 + 10) eli (120, 120, 20) jne., kunnes kuudennella askeleella väri on (100 + 5 * 10, 200 - 5 * 40, 0 + 5 * 10) eli (150, 0, 50) eli lopetusväri. Värin osia on helpointa säilyttää taulukossa, RGB-funktio muuttaa värin piirtokomentojen kelpuuttamaan muotoon ja toisensuuntaiseen muutokseen on ohje täällä. Lue myös tämä.

Tekaisin vielä pikku esimerkin asiasta:

Dim alku(2) As Single, loppu(2) As Single
Dim muutos(2) As Single
Dim i As Integer, j As Integer, askel As Integer

' aloitusväri (100, 200, 0)
alku(0) = 100: alku(1) = 200: alku(2) = 0
' lopetusväri (150, 0, 50)
loppu(0) = 150: loppu(1) = 0: loppu(2) = 50
' muutosaskel on formin leveys
askel = ScaleWidth

' lasketaan muutosarvot
For i = 0 To 2
    muutos(i) = (loppu(i) - alku(i)) / askel
Next

' piirretään väriliuku
For j = 0 To askel
    ' piirretään pystysuora palkki
    Line (j, 0)-(j, ScaleHeight), RGB(alku(0), alku(1), alku(2))
    ' muutetaan väriä kohti lopullista
    For i = 0 To 2
        alku(i) = alku(i) + muutos(i)
    Next
Next

Milu [01.05.2005 23:59:58]

#

jee
hyvältä näytää, täytyy tosta soveltaa.

miiro [08.05.2005 09:16:25]

#

Mites ton saa toisin päin? Siis liuku ylhäältä alas? Niinkuin InstallShieldin vanhoissa asennusohjelmissa?

Blaze [08.05.2005 12:34:25]

#

Piirtämällä noita viivoja vaakasuoraan pystysuoran sijasta.

Live (0, j)-(ScaleWidth, j), RGB(alku(0), alku(1), alku(2))

Vastaus

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

Tietoa sivustosta