Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Efekti

Sivun loppuun

tuomas [27.04.2004 15:05:48]

#

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ä..

setä [27.04.2004 15:15:48]

#

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.

sqwiik [27.04.2004 15:17:04]

#

Tarkoitat varmaan sitä efektiä, jossa kuva tummuu hiljalleen mustaksi (fade)? Se onnistuu muuntamalla palettia.

tuomas [27.04.2004 15:21:37]

#

kyllä tarkoitin sitä fade efektiä.
Vaan miten sellaisen tekisi?
Kieli on muuten VB

tuomas [28.04.2004 14:04:05]

#

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?

thefox [28.04.2004 15:11:54]

#

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.

hunajavohveli [28.04.2004 15:41:41]

#

QB:ssä saisi sentään feidattua koko paletin, mutta VB:ssä ei moista taida olla.

tuomas [28.04.2004 17:45:03]

#

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..

sooda [29.04.2004 11:34:12]

#

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

setä [29.04.2004 12:37:36]

#

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.

tuomas [29.04.2004 14:26:10]

#

Täytyy kokeilla tota sedän tapaa..


Sivun alkuun

Vastaus

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

Tietoa sivustosta