Kirjautuminen

Haku

Tehtävät

Koodit: VB6: Siniaaltogeneraattori

Kirjoittaja: sooda

Kirjoitettu: 25.04.2004 – 25.04.2004

Tagit: grafiikka, koodi näytille, vinkki

tekee hieanoa sinistä(!) siniaaltoa hiiren avulla, aallon ensimmäinen harja on hiiren kohdalla. Tosi k3wl kun pitää hiirtä pohjassa ja raahailee :), olen ite kokeillut ton kaavan miten aallon saa tuolla tavalla hiiren mukaan, en ole kopsinut mistään.
binaaäärii: http://sooda.dy.fi/foo/siniaalto.exe

Private mX, mY, x 'hiiren alkukoordit
Private Voimakkuus, AallonPituus 'aallon ominaisuuksia

Private Sub Form_DblClick()

    Cls 'ruutu tyhennetään tuplaklikkaamalla

End Sub

Private Sub Form_Load()

    BackColor = vbWhite 'valkoinen tausta
    WindowState = 2 'koko näyttöön

End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)

    If Button = 0 Then Exit Sub 'jos ei paineta nappia niin ei tehdä mitään
    mX = x 'hiiren startti coordit
    mY = y

End Sub

Private Sub form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)

    If Button = 0 Then Exit Sub 'jos ei paineta nappia niin ei tehdä mitään
    mX = x 'hiiren startti coordit
    mY = y
    piirrä 'piirrä viiva

End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)

    If Button = 0 Then Exit Sub
    piirrä 'piirrä viiva

End Sub

Sub piirrä()

    Voimakkuus = (Height / 2 - mY) 'aallonvoimakkuus
    AallonPituus = mX / (1.5 * 3.141592653654) + 1 'aallonpituus
    For x = 0 To Width Step 5 'piirretään vasemmalta oikeelle, siirrytään 5px kerralla
        y = Voimakkuus * Sin(x / AallonPituus) 'yy koordi
        PSet (x, Height / 2 + y), RGB(0, 0, 255) 'pointsettaa
    Next

End Sub

Kommentit

peki [27.04.2004 20:20:03]

#

Bugi: Jos hiiren vie vasempaan laitaan tulee vain kaksi poikittaista viivaa, vaikka pitäisi tulla pystyviivaa koko formin täydeltä.

Anteeksi nyt tämä pikkumaisuus. :D
Muuten hieno koodivinkki!

ZcMander [27.04.2004 20:42:13]

#

Ja toinenkin bugi kun pitää hiiren pohjassa.
Hieno....

Heikki [28.04.2004 07:07:21]

#

Tollahan saa komeita "efektejä".

Hyvää työtä.

makeuu [28.04.2004 07:37:40]

#

Tämähän on hieno, varsinkin kun pitäää pohjassa ja liikuttelee tasaisesti :)

sooda [28.04.2004 13:35:19]

#

peki, kiitos kun huomautit, se johtui tästä: tuon AallonPituus = (mX + 1) / (1.5 * 3.141592653654) piti olla se mikä se nyt on. Kokeilkaa kaikki sitä että pidätte hiiren ruudun vasemmassa reunassa ja viette sen ylös ja nappi pohjaan ja liikutatte hiiren alas niin tulee tosi kiva efekti! Että tää on kaunis vaikka ite sanonkin, pitäisi keksiä muitakin hiiriefektejä :P
Ja ZaLaMaMDeR, jos tarkoitit sitä että kun piirtää hiirtä pohjassa niin siitä tulee kokoajan aaltoa, niin sen pitää olla niin.

tejeez [28.04.2004 21:37:13]

#

Melko hieno. :o

thefox [30.04.2004 10:37:52]

#

Hmm, Formin ScaleMode kannattaisi asettaa Pixel-vaihtoehtoon, ja sitten loopata ScaleWidth:iin asti. Muuten tuo kommentti "siirrytään 5px kerralla" ei pidä paikkaansa :) Myöskin Height:it tulisi sitten muutttaa ScaleHeighteiksi. Tämän jälkeen viivaan tulee reikiä, mutta sitten voitaisiinkin käyttää Line-rutiinia, Line -(x, ScaleHeight / 2 + y), RGB(0, 0, 255) kunhan vain muistetaan ennen looppia asettaa grafiikkapointteri jotenkin ruudun alkuun (x = 0, y = height/2), esim. Pset:llä:

PSet (0, ScaleHeight / 2), vbWhite
For x = 0 To ScaleWidth Step 5 'piirretään vasemmalta oikeelle, siirrytään 5px kerralla
    y = Voimakkuus * Sin(x / AallonPituus) 'yy koordi
    Line -(x, ScaleHeight / 2 + y), RGB(0, 0, 255) 'pointsettaa
Next

sooda [30.04.2004 11:32:58]

#

Njoo, tämähän on vain vinkki josta saa soveltaa itse :) ja siitä tulee ruma jos viivoittaa kun toi efekti josta koko näyttö tulee täyteen pisteitä on hieano :)
Niin ja kun testasin tätä pixeleillä niin se bugasi jotenki, en muista miten mutta tästähän saatte itse kokeilla :D

Linkku [02.05.2004 12:30:20]

#

Hieno!

hunajavohveli [02.05.2004 19:25:03]

#

Hieno on kieltämättä. Luulin, että tuo laskukaava olisi paljon monimutkaisempi, mutta nythän tuosta jopa ymmärsin jotain. :)

Wukkopi [03.05.2004 11:04:42]

#

Aika nätti.

Wukkopi [03.05.2004 11:06:24]

#

Hahaa. Koko ruutu siniseksi ja aikaakin kului vain vajaa 7 min.

moptim [23.09.2007 09:49:18]

#

Makia :)

Hyvä Wukkopi x-d

Kirjoita kommentti

Muista lukea kirjoitusohjeet.
Tietoa sivustosta