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..
näin minä sen tekisin.
Picture1.Point (10, 10) = rgb (30, 57, 28)
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ä?
Haluatko vaihtaa esim. 10,10 kohdassa olevan pikselin värin vai hakea 10,10 kohdassa olevan värin arvon?
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)
ohops! Tein tuon testaamatta. mutta tämä toimii
Picture1.PSet (10, 10), Picture1.Point(10, 10) = RGB(10, 10, 10)
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
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.
Hmm.... ei toikaan näytä toimivan :S aika vaikeeta taitaa olla tehä..
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ä.
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ä.
Joo, vika oli yhessä kohassa... toimii nyt
Aihe on jo aika vanha, joten et voi enää vastata siihen.