Elikkä miten saisi tehtyä Visual basicilla sellaisen, että se tarkistaa kuvasta kaikki pikselit (koko kuvan) ja jos siinä on esim.
Puhdas vihreä väri, niin se vaihtaa se kohdan väriä Esim. punaseksi.
Vaikkapa silmukalla, Point():lla ja PSet():llä.
niin juuri.
for y = 0 to 100: for x = 0 to 100 if Point(x, y) = rgb(0, 255, 0) then PSet(x, y), rgb(255, 0, 0) next: next
oli tylsää niin annoin koodin. :/
Onko jotain nopeampaa tapaa toteuttaa?, koska jos laittaa että värisävy voi olla hieman erillainen,niin se hidastuu liikaa...(kuva on 1000 x 516)
Ja miten saa laitettua sen kuvan minkä se piirsi,kuvan arvoksi? (et ku kutsuis sitä picture1.picturella , niin se antais sen uudenkuvan...)
Minun tietääkseni ei ole nopeampaa tapaa, ellei sitten API:sta tms. löydy jotain, mutta eikö tuon kuvan saa picture.image :lla?
Joo jos autoredraw = true... Mut se taas hidastaa värin vaihtamista niin paljo, et ennään ei voi siedettävästi vaihtaa väriä edes puhtaassa mustassa....
WinAPI:ssa on GetBitmapBits ja SetBitmapBits funktiot joiden avulla tuon värin vaihtamisen pitäisi sujua nopeasti. Ohjeita noiden käyttöön löytyy varmasti jostain netistä ja varmasti löytyy myös valmiita koodi esimerkkejä.
Joo, Pekan mainitsemien funktioiden avulla kuvan muuttaminen lienee paljon nopeampaa, kun kuvadataa voi käsitellä suoraan taulukossa. Tosin koodin kirjoittaminen ei ole helppoa, sillä pitää ottaa huomioon kuvien eri värimäärät. Toisinaan kuvasta luettavat tavut ilmaisevat suoraan värin, toisinaan ne osoittavat vain palettiin, joka pitää lukea ja tallentaa erikseen.
Kattelin vähän tota winapia, mutta en oikeen saannut toimimaan(en kyl kauaa yrittäny), voi olla et myöhemmin vielä koitan...
Optimoin vähän koodia ja nyt saa siitä vaihdettua puhtaasta mustasta valkoseks siedettävällä nopeudella, ja huomasin, että muut formaatit ku jpg voi vaihtaa puhtaast mustast....(ja jpg:nkin kun säätää pakkaus tehoa...)
Aihe on jo aika vanha, joten et voi enää vastata siihen.