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 SubBugi: 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!
Ja toinenkin bugi kun pitää hiiren pohjassa.
Hieno....
Tollahan saa komeita "efektejä".
Hyvää työtä.
Tämähän on hieno, varsinkin kun pitäää pohjassa ja liikuttelee tasaisesti :)
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.
Melko hieno. :o
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
NextNjoo, 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
Hieno!
Hieno on kieltämättä. Luulin, että tuo laskukaava olisi paljon monimutkaisempi, mutta nythän tuosta jopa ymmärsin jotain. :)
Aika nätti.
Hahaa. Koko ruutu siniseksi ja aikaakin kului vain vajaa 7 min.
Makia :)
Hyvä Wukkopi x-d