Miten teen efektin jolla muutan kuvan vaikka pixelin kerrallaan mustemmaksi?
Kuva voisi olla kokoa 1024 x 768.
Jotenkin arpomalla muutetaan kuva kokonaan mustaksi.
Osaisiko joku neuvoa?
Täältä löytyi kyllä jokin funktio jolla muutetaan kuva mustaksi mutten löytänyt sitä..
Mustaksi saa helposti maalaamalla koko alueen mustaksi käskyllä Line(0,0)-(1024,768),0,BF. Jos haluat pixelin kerrallaan tummemmaksi niin käytä Point-funktiota värin tutkimiseen, muutat väriarvoja pienemmiksi ja palautat sen Pset-metodilla. Voi olla hieman hidas.
Tarkoitat varmaan sitä efektiä, jossa kuva tummuu hiljalleen mustaksi (fade)? Se onnistuu muuntamalla palettia.
kyllä tarkoitin sitä fade efektiä.
Vaan miten sellaisen tekisi?
Kieli on muuten VB
sain tuon toimimaan näin:
'Tämä tulee timeriin ja intervaliksi: 1 Dim A Dim B Randomize A = Int(Rnd * 1024)+ 1 B = Int(Rnd * 768)+ 1 Pset(A,B),RGB(0 , 0, 0)
Tuo toimii mutta on liian hidas.
Voiku joku auttaa tekemään siitä nopeamman?
VB:n perusfunktioilla tuollainen on melko vaikea saada nopeaksi kun kuva on noin suuri. Rnd:tä ei kannata käyttää missään tapauksessa, koska silloin saatetaan asettaa sama pikseli useaan kertaan.
Minulla oli jossain arkistoissa joku kiva ja nopea algoritmi (ja vieläpä kivan näköinen) jolla tuo homma hoituisi. Mutta kuten sanottua, Pset:llä tuosta tuskin tulee kovin nopeaa missään tilanteessa, eikä ainakaan Timeria käyttämällä :-) Jos muistan / jaksan kaivan sen algoritmin sinulle.
QB:ssä saisi sentään feidattua koko paletin, mutta VB:ssä ei moista taida olla.
Laita se algoritmi tulemaan...
Olisiko ehdotuksia miten estän saman pixelin piirron useampaan kertaaan?
Itse en ainakaan keksi mitään helppoa ratkaisua..
Muuttujiin kun ei oikein tuollaista kannata alkaa tallentamaan...Tulisi vähän turha pitkä koodi..
Tee 1024*768 taulukko ja aina kun arvot uuden niin katso taulukosta onko se jo piirretty, jos on niin arvo uudet coordit, jos ei niin piirrä ja settaa taulukkoon informaatiota että on jo piirretty.
Että mä osaan selittää monimutkasesti :D
Tolla soodan systeemillä sen viimeisen pikselin arvonta vie rutosti aikaa, koska se joudutaan arpomaan todennäköisesti noin 1024*768 kertaa. Ja kukaan ei viitsi odottaa niiden edellistenkään arvontaa. Jos tietystä määrästä N+1 on valittava kaikki satunnaisessa järjestyksessä, kannattaa luoda talukko A(N), jossa aluksi kukin elementti A(I) = I. Arvotaan satunnaisluku Int((N+1)*rnd), joka olkoon vaikka I. Sammutetaan A(I):tä vastaava pikseli tai mitä nyt sitten ollaankaan tekemässä, merkitään A(I) = A(N) ja N = N-1. Ja sitten vaan jatketaan arpomista. Näin ei koskaan arvota samaa lukua uudelleen ja kaikki tulee arvottua N+1:llä satuunnaisluvulla.
Täytyy kokeilla tota sedän tapaa..
Aihe on jo aika vanha, joten et voi enää vastata siihen.