Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: [VB6]Värit vaihtoon

Sivun loppuun

Bill Keltanen [04.07.2004 20:13:03]

#

Miten saisi pictureboxin kuvasta jonkun tietyn värin? eli siis vaihdettava RGB-arvoina ja se väri joka sen tilalle tulee niin sekin RGB-arvoina..

rndprogy [04.07.2004 20:17:25]

#

näin minä sen tekisin.

Picture1.Point (10, 10) = rgb (30, 57, 28)

Bill Keltanen [04.07.2004 20:27:16]

#

Hmmm ei toi rngprogyn toimi :O "Function call on left side of assignment must return Variant or Object" eli jos oikein arvaan, toi koodi muuttaisi pixelin tosta 10, 10-kohasta jollain värillä?

tuomas [04.07.2004 20:34:38]

#

Haluatko vaihtaa esim. 10,10 kohdassa olevan pikselin värin vai hakea 10,10 kohdassa olevan värin arvon?

Antti Laaksonen [04.07.2004 20:39:14]

#

Point palauttaa kuvapisteen väriarvon:

vari = Picture1.Point(10, 10)

Väri muutetaan PSet-komennolla:

Picture1.PSet (10, 10), vari
Picture1.PSet (10, 10), RGB(12, 34, 56)

Väriarvosta R, G ja B

rndprogy [04.07.2004 20:41:09]

#

ohops! Tein tuon testaamatta. mutta tämä toimii

Picture1.PSet (10, 10), Picture1.Point(10, 10) = RGB(10, 10, 10)

Bill Keltanen [05.07.2004 08:00:46]

#

Eikun siis että se etsisi jonkun tietyn värin ja muuttaisi kaikki samat värit johonkin muuhun väriin.. ei pikselin jos nyt ymmärrätte :S

tuomas [05.07.2004 08:34:58]

#

For i = 1 To Picture1.Width

    For j = 1 To Picture1.Height

        If Picture1.Point(i, j) = RGB(0, 0, 0) Then
           Picture1.PSet (i, j), RGB(255, 255, 255)
        End If

    Next

Next

Esimerkki etsii mustia pikseleitä ja korvaa ne valkoisiksi.
Muista vaihtaa twipit pikseleiksi.

Bill Keltanen [05.07.2004 08:59:18]

#

Hmm.... ei toikaan näytä toimivan :S aika vaikeeta taitaa olla tehä..

tuomas [05.07.2004 09:09:27]

#

Kyllä se toimii jos kuvasta todella löytyy pikseleitä joiden väri arvo on nimenomaan (0, 0, 0).
esim (0, 0, 1) näyttää myös mustalta mutta väriarvo ei täsmäisi.
Tuo toimii nopeammin jos käytät pikseleitä.

hunajavohveli [05.07.2004 11:27:53]

#

Bill Keltanen kirjoitti:

Eikun siis että se etsisi jonkun tietyn värin ja muuttaisi kaikki samat värit johonkin muuhun väriin.. ei pikselin jos nyt ymmärrätte :S

No käyt silmukalla läpi jokaisen pikselin, ja jos kohdasta löytyy väri jota haetaan, niin plotataan siihen kohtaan uusi pikseli toisella värillä. Ihan niinkuin tuomaksen koodi tekee. Kyllä tuo minusta ainakin pitäisi toimia. Ymmärrät kai, että värin pitää olla täsmälleen sama. Voithan toki tehdä niin, että katsot, kuinka paljon pikselin väri poikkeaa haetusta väriarvosta, ja jos se on riittävän lähellä sitä, niin sitten piirretään uusi pikseli.
Edit: Menetelmä on vain aika hidas. Sääli, ettei VB:ssä ole palettiominaisuuksia, kuten QB:ssä.

Bill Keltanen [05.07.2004 13:12:56]

#

Joo, vika oli yhessä kohassa... toimii nyt


Sivun alkuun

Vastaus

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

Tietoa sivustosta